2014-10-31 63 views
-2

我正在尋找社會安全號碼的形式"###-##-####"。我需要的方式,第一個字符也可以被允許鍵入"@"接受一個額外字符的SSN的正則表達式

我該如何添加?我需要一個蒙面的文本框蒙版。

+0

所以要澄清#是一個數字0-9,你要允許你說什麼,或者'@ ## - # ## - ####'? – Chris 2014-10-31 15:58:37

+0

社會安全號碼在中間部分只有2位數字,而不是加拿大的3 – gunr2171 2014-10-31 16:00:06

+0

@ gunr2171,它是三位數字,美國兩位數字。另外,這甚至不是我的問題的主要觀點。 – ConfusedSleepyDeveloper 2014-10-31 16:05:43

回答

0

所有你需要的是這個(\ d是任何數字和\ d爲\ d逃過C#和@意味着它將接受0或1 @?)

@?\\d\\d\\d-\\d\\d-\\d\\d\\d\\d 
+1

檢查評論迴應我的OP。如果他們輸入那個,那麼'@'是唯一允許的。 – Chris 2014-10-31 16:02:42

+0

它也說「壞編譯常量值」 – ConfusedSleepyDeveloper 2014-10-31 16:06:51

+0

我的壞東西沒有看到C#標記,你需要跳過反斜槓 – ghostbust555 2014-10-31 16:08:01

3

試試這個正則表達式:

^(@|\d\d\d-\d\d-\d\d\d\d)$ 

(注:這是與美國的格式:###-##-####

^$意味着字符串的「開始」和「結束」,這樣就可以不匹配項目在文字中間。

|說「一個或另一個」。所以它會匹配@或數字。

下面將匹配

 
123-45-6789 
@ 

但這不會匹配

 
234-3333-14234 
@123-45-6789 

你可以take a demo here

確保當你鍵入C#這一點,你使用正確的字符轉義:

string pattern = @"^(@|\d\d\d-\d\d-\d\d\d\d)$"; 
+0

注意:你也可以使用'^(?:@ | \ d \ d \ d- \ d \ d- \ d \ d \ d \ d)$'如果您想避開捕獲組。 – gunr2171 2014-10-31 16:13:29

+1

我可能讀的是錯誤的問題,但好像OP希望在SSN之前有一個可選的@,而不是@或SSN。並基於評論也許是一個可選&以及? – juharr 2014-10-31 16:15:26

+0

@juharr刪除了OP評論,說「無論是@還是數字」。我會嘗試更新我的回答[此評論](http://stackoverflow.com/questions/26678715/regular-expression-for-ssn-that-accept-one-extra-character#comment41956863_26678715) – gunr2171 2014-10-31 16:16:13