回答
所有你需要的是這個(\ d是任何數字和\ d爲\ d逃過C#和@意味着它將接受0或1 @?)
@?\\d\\d\\d-\\d\\d-\\d\\d\\d\\d
檢查評論迴應我的OP。如果他們輸入那個,那麼'@'是唯一允許的。 – Chris 2014-10-31 16:02:42
它也說「壞編譯常量值」 – ConfusedSleepyDeveloper 2014-10-31 16:06:51
我的壞東西沒有看到C#標記,你需要跳過反斜槓 – ghostbust555 2014-10-31 16:08:01
試試這個正則表達式:
^(@|\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)$";
注意:你也可以使用'^(?:@ | \ d \ d \ d- \ d \ d- \ d \ d \ d \ d)$'如果您想避開捕獲組。 – gunr2171 2014-10-31 16:13:29
我可能讀的是錯誤的問題,但好像OP希望在SSN之前有一個可選的@,而不是@或SSN。並基於評論也許是一個可選&以及? – juharr 2014-10-31 16:15:26
@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
- 1. 正則表達式只是一個SSN
- 2. 正則表達式接受 - 字符
- 3. 正則表達式接受不同模式的4個字符
- 4. 正則表達式使用正則表達式的SSN
- 5. 正則表達式接受字符串PHP的一部分
- 6. SSN編號的正則表達式
- 7. Ruby中的SSN正則表達式
- 8. 正則表達式接受@
- 9. 接受數字,字母和連字符的正則表達式
- 10. 正則表達式接受至少一個字母字符和數字字符
- 11. 正則表達式只接受幾個字母字符
- 12. 格式ssn使用正則表達式
- 13. 如何寫一個正則表達式接受的數字,+和 -
- 14. javascript正則表達式和結果中的額外字符
- 15. 添加額外的字符過濾器,正則表達式
- 16. 幫助正則表達式html加上額外的字符串
- 17. 正則表達式表達額外一個領域
- 18. 創建一個正則表達式只接受一組特定的字符串
- 19. 正則表達式接受5個字符與可選
- 20. 正則表達式是不是SSN
- 21. 使用正則表達式掩蔽SSN
- 22. 使接受某些字符的正則表達式
- 23. 接受'空白'字符的正則表達式
- 24. C#正則表達式 - 接受字符串中的空格
- 25. Android:接受正則表達式中的所有特殊字符
- 26. Android的正則表達式接受特定字符
- 27. PHP正則表達式[只接受選定的字符]
- 28. 更改正則表達式只接受指定的字符?
- 29. 正則表達式 - 需要一些字符,並只允許一些額外的?
- 30. Java的正則表達式接受比
所以要澄清#是一個數字0-9,你要允許你說什麼,或者'@ ## - # ## - ####'? – Chris 2014-10-31 15:58:37
社會安全號碼在中間部分只有2位數字,而不是加拿大的3 – gunr2171 2014-10-31 16:00:06
@ gunr2171,它是三位數字,美國兩位數字。另外,這甚至不是我的問題的主要觀點。 – ConfusedSleepyDeveloper 2014-10-31 16:05:43