包含国家字符的姓名正则表达式

0 投票
2 回答
2308 浏览
提问于 2025-04-17 18:15

我在找一个正则表达式,用来验证名字(使用Python的标准模块re)。

这个表达式应该能处理标准的拉丁字母(a-z)、空格、连字符,还要能处理西欧字符(比如æ、ø、å、ü、ö、ä等),甚至还要支持中文、泰文、阿拉伯文等等。

这些都可以算作“字母”——它们是可以接受的,但像!@#$%&*()和引号等特殊字符就不行。

我真的没找到能做到这一点的东西——有没有人知道怎么做?

附注:符合条件的字符有成千上万,简单列出所有字符是不现实的。

2 个回答

1

你可以创建一个字符类,这样就能匹配你想要的所有语言。例如:

[\p{Cyrillic}\p{Latin}]

这个可以匹配所有的西里尔字母和拉丁字母。我不确定这是不是最好的解决办法,但它确实有效。

这里有完整的参考资料。

3

其实问题的关键是你需要这个做什么?也许你可以试试反过来的方法,也就是指定哪些字符是允许的,比如说 [^ \t] 之类的。

你还应该看看这个 手册,里面有一些像 \s\w 这样的内容,结合设置 LOCALE 一起使用。

撰写回答