2015-01-26 26 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