ASP.NET正则表达式验证程序未按预期验证

时间:2013-10-21 18:56:28

标签: c# asp.net regex

我正在尝试使用正则表达式验证程序在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>

3 个答案:

答案 0 :(得分:5)

如果您查看示例here,您会看到在此上下文中,正则表达式应该/标记开头和结尾。试试这个:

ValidationExpression="^\([0-9]{3}\)[0-9]{3}-[0-9]{4}$"

^$确保您不接受电话号码之前或之后的额外字符。

答案 1 :(得分:1)

你也想考虑扩展。例如,(770)123-4567 x1234。

((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}( x\d{0,})?

Validating Phone Numbers with Extensions in ASP.NET

答案 2 :(得分:0)

我实际上在页面的其他地方发送了一个问题,发送了一个日期的空白文本框。显然,C#将空字段解释为01/01/0001,因此使其超出范围。这让其他一切都失去了。 @neontapir你是对的;我不应该有表达的那些。我原本没有,但是当我发布这个时,我就这么做了。感谢。