2015-01-26 24 views
7

在C#代碼中,我試圖傳遞中文字符:" 中文ABC123"C語言正則表達式中的外文字符#

當我使用一般的字母數字使用"^[a-zA-Z0-9\s]+$"

它不通過對"中文ABC123"和正則表達式驗證失敗。

我需要爲C#添加哪些其他表達式?

回答

14

從任何語言使用匹配任何字母字符:

\p{L} 

如果你也想匹配的數字:

[\p{L}\p{Nd}]+ 

\p{L} ...匹配的Unicode類別字母的字符。
                               它是短形式[\ p {的L1} \ p {路} \ p {LT} \ p {Lm的} \ p {螺} ]
                                    \p{Ll} ...匹配小寫字母。 (ABC)
                                    \p{Lu} ...匹配大寫字母。 (ABC)
                                    \p{Lt} ...匹配的首字母大寫字母。
                                    \p{Lm} ...匹配修飾符字母。
                                    \p{Lo} ...匹配的字母不區分。 (中文)

\p{Nd} ...匹配unicode類別十進制數字的一個字符。

只需更換:^[a-zA-Z0-9\s]+$^[\p{L}0-9\s]+$

+0

或者,如果標點符號是OK,簡單的'\ w'([字字符(https://msdn.microsoft.com/en-us/library/20bw873z .aspx#WordCharacter))可以用來代替'[\ p {L} 0-9]'。 – bzlm 2015-01-26 19:33:20

+0

非常感謝Andie2302。它效果很好。 – user2683269 2015-01-26 19:43:29

+0

順便說一句Andie2302,這個與html5模式存在巨大沖突,我得到了這個用於HTML5模式屬性的錯誤,並且未能通過驗證。你有沒有想法爲所有語言使用HTML5模式attirbute? – user2683269 2015-01-26 20:57:35