我在asp.net电子邮件测试框中有以下正则表达式:
([a-zA-Z0-9_\-\.]+)\@((base\.co\.uk)|(base\.com)|(group\.com)|(arg\.co\.uk)|(arggroup\.com))
此正则表达式仅适用于
xxx@base.co.uk
xxx@base.com
xxx@group.com
它不起作用:
xxx@arg.co.uk
xxx@arggroup.com
请帮帮我
答案 0 :(得分:10)
此:
[a-zA-Z0-9_-.]
包含虚假范围,下划线为点。你的意思是“下划线,短划线或点”这样:
[a-zA-Z0-9_\-.]
?一旦我解决了这个问题,它对我有用。
您还应该在地址中使用\.
而不是.
- 点匹配任何字符,因此您将baseXcom
与您的模式匹配。 (请注意,[]
s内的点不需要反斜杠。)
完整更正的表达:
@"([a-zA-Z0-9_\-.]+)@((base\.co\.uk)|(base\.com)|(group\.com)|(arg\.co\.uk)|(arggroup\.com))"
(请注意,我正在使用@""
来避免反斜杠。)
答案 1 :(得分:6)
虽然我没有遇到确切的问题,但你错过/忽略了一个重点。 : - )
'.'
是正则表达式中的外卡,它匹配任何内容。
匹配'。'使用
\.
试试这个
([a-zA-Z0-9_\-.]+)@(base\.co\.uk)|(base\.com)|(group\.com)|(arg\.co\.uk)|(arggroup\.com)
答案 2 :(得分:0)
使用正则表达式测试器here可能会对您有所帮助。但是,据我所知,正则表达式中存在一个错误,该错误应该阻止它使用任何示例:该组应该是:
[-a-zA-Z0-9_.]
使用该修复程序,它适用于您的所有示例。让-
和_
之间的.
尝试构建范围,但ASCII值的顺序错误。
此外,最终部分中使用的点应转发为base\.com
而不是base.com