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

本文关键字:验证 NET 正则表达式 ASP | 更新日期: 2023-09-27 18:36:21

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

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

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

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

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

您还需要考虑扩展。例如,(770)123-4567 x1234。

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

使用 ASP.NET 分机验证电话号码

我实际上在页面上的其他地方发送日期的空白文本框时遇到了问题。显然,C# 将空字段解释为01/01/0001,因此超出了范围。这是把其他一切都抛弃了。 @neontapir 你是对的;我不应该在表达中出现这些。我最初没有,但碰巧我在发布这个时做到了。谢谢。