C#正则表达英文字符和非英文字母

时间:2015-08-30 16:02:06

标签: c# regex

我根据MSDN将此^[a-zA-Z''-'\s]{1,40}$正则表达式用于名称验证程序。

现在我想要添加非英语字符。

我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

^[\p{L}'\s-]{1,40}$

请注意\ p {L}是Unicode属性,它匹配具有属性字母的所有内容。

答案 1 :(得分:1)

要支持所有BMP和星界平面,您需要\p{L}(所有字母)和\p{M}(所有变音符号)Unicode类别类:

^[\p{L}\p{M}\s'-]{1,40}$

请注意,\p{L}已包含[a-zA-Z],以及所有小写和大写字母。

或者,因为\s匹配换行符(我怀疑你真的需要换行符号),你可以使用\p{Zs} - Unicode分隔符类(各种空格):

^[\p{L}\p{M}\p{Zs}'-]{1,40}$

将连字符放在最后是最好的做法,尽管它也会在你的正则表达式中作为字面连字符处理。