正则表达式问题

时间:2009-07-10 12:15:30

标签: asp.net regex visual-studio-2008 visual-studio-express

我在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

请帮帮我

3 个答案:

答案 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