我想修改这个正则表达式包含撇号

时间:2012-11-09 19:52:35

标签: regex

此正则表达式用于验证电子邮件地址,但不包括撇号(')的情况,这是电子邮件地址第一部分中的有效字符。 我试过自己,并使用我发现的一些例子,但它们不起作用。

^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$

如何稍微修改它以支持'character(apostraphy)?

2 个答案:

答案 0 :(得分:1)

根据电子邮件地址的文档,撇号可以出现在@符号之前的任何位置,在您当前的正则表达式中是:

^([\w-\.]+)@

您应该能够将撇号添加到有效字符的括号中:

^([\w-\.']+)@

这将使整个正则表达式:

^([\w-\.']+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$

编辑(单引号中包含正则表达式)
如果您在带有单引号的字符串中使用此正则表达式,例如在带有$regex = '^([\w ...的PHP中,则需要使用\'转义正则表达式中的单引号:

^([\w-\.\']+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$

答案 1 :(得分:1)

您需要按如下方式更新第一部分:

^([\'\w-\.]+)