答案 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}$
将连字符放在最后是最好的做法,尽管它也会在你的正则表达式中作为字面连字符处理。