0

我有一个带有正则表达式验证器文本框的 ASP.NET 网站。

我已经更改了正则表达式验证属性“验证器表达式”中的表达式,并且在编译(重建)和运行之后,验证 CHANGE 没有反映。

之前的验证工作正常,但更改后的验证不起作用。

请帮我!

编辑:

第一个代码:

([a-zA-Z0-9_-.]+)\@((base.co.uk)|(base.com)|(group.com))

第二个代码:

@"([a-zA-Z0-9_\-.]+)@((base\.co\.uk)|(base\.com)|(group\.com)|(arg\.co\.uk)|(arggroup\.com))"
4

2 回答 2

0

假设您的“第一个代码”是文字正则表达式,您需要使用反斜杠转义字符类中的连字符。

您的“第二个代码”是一个正则表达式,格式为 C# 逐字字符串,可以匹配电子邮件地址,例如whatever@base.co.uk。这个正则表达式没有任何问题。

如果它不能按您想要的方式工作,您将不得不发布您使用此正则表达式的代码。

于 2009-07-23T08:12:04.057 回答
-1

在这部分中:[a-zA-Z0-9_\-.]您正在转义连字符。将连字符放在正则表达式字符类中的正确方法是放在第一位(或者它认为它是范围的一部分):

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

然后你删除了@之前的反斜杠。在 Perl 中,@ 将被视为列表名称的一部分,但在 C# 中,我不确定不转义它会产生什么影响。

期间的逃脱也是可疑的。您可能需要将它们加倍:例如\\. 相反,我对句号所做的是使用字符类:即 [.] 在字符类中,句点失去了它的特殊含义。

尝试这个:

@"([-a-zA-Z0-9_.]+)\@((base[.]co[.]uk)|(base[.]com)|(group[.]com)|(arg[.]co[.]uk)|(arggroup[.]com))"
于 2009-07-10T17:36:45.783 回答