ASP.NET正则表达式验证器未按预期进行验证

3

我正在使用正则表达式验证器在Visual Studio中验证格式为(###)###-####的电话号码,使用的正则表达式是\([0-9]{3}\)[0-9]{3}-[0-9]{4}。但是当我用(111)111-1111测试时,收到错误信息。然而,在正则表达式测试网站上,这个表达式可以正常工作。我是否忽略了什么其他问题?

<asp:RegularExpressionValidator
     ID="PhoneValidator"
     runat="server"
     ErrorMessage="Phone Format Must Be (###)###-####" 
     ValidationExpression="/\([0-9]{3}\)[0-9]{3}-[0-9]{4}/g"
     Display="None" 
     ControlToValidate="PhoneTextBox">
</asp:RegularExpressionValidator>

1
哪个网站?不同的正则表达式引擎有细微的差异。 - neontapir
我还注意到在您的验证器中,您使用了/pattern/g,这似乎被解释为模式的一部分,而不是作为正则表达式指令。 - neontapir
3个回答

5
如果你看一下这里的例子,你会发现在这种情况下,正则表达式不应该以/标记开始和结束。请尝试使用以下方法:
ValidationExpression="^\([0-9]{3}\)[0-9]{3}-[0-9]{4}$"

“^”和“$” 确保你不会在电话号码前后接受额外字符。

1

0
我在页面其他地方发送了一个空的日期文本框,这导致问题出现。显然,C#将空字段解释为01/01/0001,因此使其超出范围。这让其他所有东西都失调了。@neontapir你是对的;我不应该在表达式上加那些。我一开始没有加,但发帖时恰好加了。谢谢。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接