通过正则表达式只允许字母和“特殊”字母(éèà等)

时间:2013-02-28 09:15:30

标签: c# regex

我正在尝试匹配一个字符串,看它是否只包含字母。应该允许各种信件。那么典型的a-zA-Z,还有áàéèó...等。

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

但是这也允许像\/<>*()...等字符。这些字符显然不属于名称。当我只想要允许字母和“特殊”字母时,正则表达式是什么样的?

2 个答案:

答案 0 :(得分:7)

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

Char.IsLetter Method

  

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

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

这会为数字和false等提供\/<>*()结果。

答案 1 :(得分:6)

您可以使用完全相同的字符类:

\p{L}

所以正则表达式

^\p{L}+$
如果字符串仅包含字母,则

将匹配。如果您希望组合字符,那么

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

作品。

快速PowerShell测试:

PS> 'foo','bär','a.b','&^#&%','123','кошка' -match '^\p{L}+$'
foo
bär
кошка