c#正则表达式,用于英文字符和非英文字符

本文关键字:字符 文字符 正则表达式 用于 | 更新日期: 2023-09-27 18:10:37

根据MSDN,我使用^[a-zA-Z''-''s]{1,40}$正则表达式作为名称验证器。

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

我该怎么做?

c#正则表达式,用于英文字符和非英文字符

要支持所有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}$

将连字符放在末尾是最佳实践,尽管它在正则表达式中也会作为文字连字符处理。

你可以试试:

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

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