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