2015-05-09 63 views
1

我想用正則表達式來驗證破折號的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" /> 

回答

2

這是我如何解決:

^\d{3}-\d{2}-\d{4}$ 
0

有幾件事情需要注意的RegularExpressionValidator

它永遠不會被一個空字符串中的控制激活它是 驗證。只有RequiredFieldValidator捕獲空字符串 不需要指定字符串的開始和字符串匹配的結尾 個字符(^和$) - 它們是假定的。如果添加它們,它不會損害 (或更改)任何東西 - 這是沒有必要的。

您可以在MSDN中引用該頁面上的示例正則表達式,並將該值視爲逐字字符串文字。

所以,只允許帶連字符的核潛艇,您只需要使用:

ValidationExpression="\d{3}-\d{2}-\d{4}" 

這也是ECMAScript的標準,安全的服務器和客戶端同時使用,但你可能會進一步限制

ValidationExpression="[0-9]{3}-[0-9]{2}-[0-9]{4}" 

請記住,服務器端的\d也可以匹配一些非標準(阿拉伯等等)數字。