1

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

请帮我

4

3 回答 3

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))"

(请注意,我@""用来避免必须反斜杠我的反斜杠。)

于 2009-07-10T12:22:37.143 回答
6

尽管我没有找到确切的问题,但您在这里错过/忽略了一个重要点。:-)

'.'是正则表达式中的通配符,它​​匹配任何东西。

匹配 '。' 利用

\.

让我们试试这个

([a-zA-Z0-9_\-.]+)@(base\.co\.uk)|(base\.com)|(group\.com)|(arg\.co\.uk)|(arggroup\.com)
于 2009-07-10T12:20:49.967 回答
0

在这里使用正则表达式测试器可能会对您有所帮助。但是,据我所见,正则表达式中有一个错误应该阻止它与任何示例一起使用:该组应该是:

[-a-zA-Z0-9_.]

通过该修复,它适用于您的所有示例。尝试构建一个-范围_.但 ASCII 值的顺序错误。

结尾部分使用的点也应该转义为base\.com而不是base.com

于 2009-07-10T12:26:20.373 回答