我希望通过确保他们拥有特定的大学子域来验证电子邮件地址,例如如果用户说他们就读牛津大学,我想检查他们的电子邮件是否以.ox.ac.uk结尾
如果我将'.ox.ac.uk'部分存储为变量,我如何将其与正则表达式结合起来检查整个电子邮件是否有效并以该变量后缀结束?
非常感谢!
答案 0 :(得分:3)
我们正在使用此电子邮件模式(源自此regular-expressions.info article):
^[\w!#$%&'*+/=?^`{|}~-]+(?:\.[\w!#$%&'*+/=?^`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`
您应该能够使用所需的后缀扩展它:
^[\w!#$%&'*+/=?^`{|}~-]+(?:\.[\w!#$%&'*+/=?`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+(?:\.ox\.ac\.uk)$`
请注意,我将TLD部分[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?
替换为您所需的后缀(?:\.ox\.ac\.uk)
(\.
仅用于匹配点数)
编辑:另外一个注释:如果您使用String#matches(...)
或Matcher#matches()
,则不需要前导^和尾随$,因为整个字符串都必须匹配。
答案 1 :(得分:0)
假设你正在使用php。
$ending = '.ox.ac.uk';
if(preg_match('/'.preg_quote($ending).'$/i', $email_address)) //... your code
更多信息:preg_quote()是必要的,这样如果字符具有特殊含义就会被转义。在你的情况下,它是点。
编辑:要检查整个电子邮件是否有效,请参阅其他问题,这会被问到很多。只是想帮助解决你的特殊情况。