我正在尝试匹配一个字符串以查看它是否仅由字母组成。应允许使用各种字母。所以典型的a-zA-Z
,还有áàéèó...
等等。
我试图将它与以下正则表达式匹配:([\S])*
但这也允许诸如\/<>*()...
etc 之类的字符。这些显然是不属于名称的字符。当我只想允许字母和“特殊”字母时,正则表达式的外观如何?
对于非 REGEX解决方案,您可以使用char.IsLetter
指示指定的 Unicode 字符是否归类为字母。
string str = "Abcáàéèó";
bool result = str.All(char.IsLetter);
这将给出false
数字\/<>*()
等的结果。
您可以使用确切说明的字符类:
\p{L}
所以正则表达式
^\p{L}+$
如果字符串仅由字母组成,则将匹配。如果您期望组合字符,那么
^(\p{L}\p{M}*)+$
作品。
快速 PowerShell 测试:
PS> 'foo','bär','a.b','&^#&%','123','кошка' -match '^\p{L}+$'
foo
bär
кошка