我有一个vbscript,如果正确使用正则表达式检查指定的电子邮件格式。但是,在具有特殊字符的命名电子邮件字符串时,我的正则表达式与下面命名的电子邮件不匹配:
"Davé Lory, Sr." <jhonson@test.com>
我正在使用正则表达式来检查有效的命名电子邮件:
^\s*(([\"][\sa-zA-Z0-9_\-\.\'\,\&]*[\"])|([\sa-zA-Z0-9_\-\.\'\,\&]*))*\s*[\(<]\s*([A-Za-z0-9_\x27]+((\.|-)['A-Za-z0-9_\x27]+)*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+)\s*[\)>]\s*$
但如果指定的电子邮件包含特殊字符,例如é或È等,则无法匹配。
如何在正则表达式中忽略此特殊字符?
请帮忙。
感谢。
答案 0 :(得分:2)
你不能忽视它们,你需要匹配它们。
你可以在这里试试这个
^\s*((\"[^"]*?\")|([\sa-zA-Z0-9_\-\.\'\,\&]*))*\s*[\(<]\s*([A-Za-z0-9_\x27]+((\.|-)['A-Za-z0-9_\x27]+)*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+)\s*[\)>]\s*$
我已使用
删除了您的[\"][\sa-zA-Z0-9_\-\.\'\,\&]*[\"]
\"[^"]*?\"
您不需要围绕单个字符的方括号
[^"]*?
是一个懒人匹配,可以匹配任何非"
的内容,直到下一个"
您可以在Rubular
在线查看我没有检查表达式的其余部分,我在rubular上看到的是有很多捕获组。如果您不需要结果,则可以在开始括号后?:
使其无法捕获(例如(?:\"[^"]*?\")
)。