Java 大学电子邮件的正则表达式
我希望通过确保电子邮件地址具有特定的大学子域来验证电子邮件地址,例如,如果用户说他们就读牛津大学,我希望检查他们的电子邮件是否以.ox.ac.uk结尾 如果将“.ox.ac.uk”部分存储为变量,如何将其与正则表达式合并以检查整个电子邮件是否有效并以该变量后缀结尾Java 大学电子邮件的正则表达式,java,regex,Java,Regex,我希望通过确保电子邮件地址具有特定的大学子域来验证电子邮件地址,例如,如果用户说他们就读牛津大学,我希望检查他们的电子邮件是否以.ox.ac.uk结尾 如果将“.ox.ac.uk”部分存储为变量,如何将其与正则表达式合并以检查整个电子邮件是否有效并以该变量后缀结尾 非常感谢 假设您使用的是php $ending = '.ox.ac.uk'; if(preg_match('/'.preg_quote($ending).'$/i', $email_address)) //... your code
非常感谢 假设您使用的是php
$ending = '.ox.ac.uk';
if(preg_match('/'.preg_quote($ending).'$/i', $email_address)) //... your code
进一步信息:preg_quote()是必要的,这样,如果字符有特殊含义,就会转义。在你的情况下,这是点
编辑:要检查整个电子邮件是否有效,请参阅其他问题,它被问了很多问题。只是想帮助您处理特殊情况。假设您使用的是php
$ending = '.ox.ac.uk';
if(preg_match('/'.preg_quote($ending).'$/i', $email_address)) //... your code
进一步信息:preg_quote()是必要的,这样,如果字符有特殊含义,就会转义。在你的情况下,这是点
编辑:要检查整个电子邮件是否有效,请参阅其他问题,它被问了很多问题。只是想帮助您处理特殊情况。我们使用此电子邮件模式(源于此): 您应该能够使用所需的后缀扩展它:
^[\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)
(\.
仅用于匹配dot)
编辑:另一个注意事项:如果您使用
String#matches(…)
或Matcher#matches()
则不需要前导“^和尾随$,因为整个字符串无论如何都必须匹配。我们使用的是这种电子邮件模式(由此派生):
您应该能够使用所需的后缀扩展它:
^[\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)
(\.
仅用于匹配dot)
编辑:另一个注意事项:如果使用
String#matches(…)
或Matcher#matches()
则不需要前导“^和尾随$,因为整个字符串无论如何都必须匹配。非常感谢!我实际上在使用java,但我将尝试将其转换为:)非常感谢!我实际上在使用java,但我会尝试将其转换为:)@Jonny是的,我们在数据库中保留正则表达式,这就是为什么示例中没有\\。在Java字符串中,您可以避开所有的反斜杠:)我正在使用字符串表达式=“^[\\w!\$%&'*+/=?^{124;}-]+(?:\.\.[\\ w!\\\$%&'*+/=?
{124;}-]+*([a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9-][-zA-Z0-9])”)(?::[a-zA-Z0-Z0-Z0-9-\\\\\\\\\\\.[a-zA-Z0-Z0-9])”)。(?:::)\\\\\\\\\\\;正如您所建议的,但它似乎不匹配ok,因为它表示输入失败myname@ox.ac.uk,这是应该的succeed@Jonny你说后缀是.ox.ac.uk
,所以我假设@和后缀之间有某种东西。但是,您的测试电子邮件地址以@ox.ac.uk
结尾,因此不匹配。@Jonny为了匹配仅以@ox.ac.uk结尾的地址,请将表达式更改为[\\w!\\\$%&'*+/=?^{{124;}-]+(?:\.\.\[\\ w!\\$%&'*+/=?{{124}-]++*@(?:\\\.ox ac\\\\\\\\\\.uk
为什么不使用正则表达式检查电子邮件地址是否有效,然后使用String.endsWith(“.ox.ac.uk”)?@Jonny是的,我们将该正则表达式保留在数据库中,这就是示例中没有\\的原因。在Java字符串中,您可以避开所有的反斜杠:)我正在使用字符串表达式=“^[\\w!\$%&'*+/=?^{124;}-]+(?:\.\.[\\ w!\\\$%&'*+/=?
{124;}-]+*([a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9-][-zA-Z0-9])”)(?::[a-zA-Z0-Z0-Z0-9-\\\\\\\\\\\.[a-zA-Z0-Z0-9])”)。(?:::)\\\\\\\\\\\;正如您所建议的,但它似乎不匹配ok,因为它表示输入失败myname@ox.ac.uk,这是应该的succeed@Jonny你说后缀是.ox.ac.uk
,所以我假设@和后缀之间有某种东西。但是,您的测试电子邮件地址以@ox.ac.uk
结尾,因此不匹配。@Jonny为了匹配仅以@ox.ac.uk结尾的地址,请将表达式更改为[\\w!\\\$%&'*+/=?^{{124;}-]+(?:\.\.\[\\ w!\\$%&'*+/=?{{124}-]++*@(?:\\\.ox ac\\\\\\\\\\.uk
为什么不使用正则表达式检查电子邮件地址是否有效,然后使用String.endsWith(“.ox.ac.uk”)?此检查的值是多少,您确定它会超过喜欢使用gmail.com
帐户或其他帐户的用户的讨厌因素吗?此检查的值是多少,对于那些喜欢使用他们的gmail.com
帐户或其他什么的用户来说,你确定这会超过麻烦因素吗?