6

我正在尝试匹配一个字符串以查看它是否仅由字母组成。应允许使用各种字母。所以典型的a-zA-Z,还有áàéèó...等等。

我试图将它与以下正则表达式匹配:([\S])*

但这也允许诸如\/<>*()...etc 之类的字符。这些显然是不属于名称的字符。当我只想允许字母和“特殊”字母时,正则表达式的外观如何?

4

2 回答 2

7

对于非 REGEX解决方案,您可以使用char.IsLetter

Char.IsLetter 方法

指示指定的 Unicode 字符是否归类为字母。

string str = "Abcáàéèó";
bool result = str.All(char.IsLetter);

这将给出false数字\/<>*()等的结果。

于 2013-02-28T09:19:15.690 回答
6

您可以使用确切说明的字符类:

\p{L}

所以正则表达式

^\p{L}+$

如果字符串仅由字母组成,则将匹配。如果您期望组合字符,那么

^(\p{L}\p{M}*)+$

作品。

快速 PowerShell 测试:

PS> 'foo','bär','a.b','&^#&%','123','кошка' -match '^\p{L}+$'
foo
bär
кошка
于 2013-02-28T09:17:14.167 回答