只允许字母和“特殊”;字母(& # 233;& # 232;& # 224;等)通过正则表达式

本文关键字:正则表达式 许字母 特殊 字母 | 更新日期: 2023-09-27 18:01:43

我试图匹配一个字符串,看看它是否只由字母组成。各种信件都是允许的。所以典型的a-zA-Z,还有áàéèó...等等

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

但这也允许像'/<>*()...等字符。这些字符显然不属于一个名字。当我只想允许字母和"特殊"字母时,正则表达式看起来如何?

只允许字母和“特殊”;字母(& # 233;& # 232;& # 224;等)通过正则表达式

对于非regex 解决方案,您可以使用char。胰岛

字符。胰岛方法

指定的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
кошка