我想用正則表達式來驗證破折號的SSN。這是我想看到的格式:000-00-0000。由於某種原因,此表達式對我無效。社會保障在asp.net中的正則表達式驗證器
<asp:RegularExpressionValidator runat="server" Display="Dynamic" ValidationExpression="^(\\d{3}-\\d{2}-\\d{4}|\\d{9})$" ControlToValidate="txtSSN" ForeColor="Red" />
我想用正則表達式來驗證破折號的SSN。這是我想看到的格式:000-00-0000。由於某種原因,此表達式對我無效。社會保障在asp.net中的正則表達式驗證器
<asp:RegularExpressionValidator runat="server" Display="Dynamic" ValidationExpression="^(\\d{3}-\\d{2}-\\d{4}|\\d{9})$" ControlToValidate="txtSSN" ForeColor="Red" />
這是我如何解決:
^\d{3}-\d{2}-\d{4}$
有幾件事情需要注意的RegularExpressionValidator
:
它永遠不會被一個空字符串中的控制激活它是 驗證。只有RequiredFieldValidator捕獲空字符串 不需要指定字符串的開始和字符串匹配的結尾 個字符(^和$) - 它們是假定的。如果添加它們,它不會損害 (或更改)任何東西 - 這是沒有必要的。
您可以在MSDN中引用該頁面上的示例正則表達式,並將該值視爲逐字字符串文字。
所以,只允許帶連字符的核潛艇,您只需要使用:
ValidationExpression="\d{3}-\d{2}-\d{4}"
這也是ECMAScript的標準,安全的服務器和客戶端同時使用,但你可能會進一步限制
ValidationExpression="[0-9]{3}-[0-9]{2}-[0-9]{4}"
請記住,服務器端的\d
也可以匹配一些非標準(阿拉伯等等)數字。