如何验证人名?- Python/Django

2 投票
4 回答
8259 浏览
提问于 2025-04-16 14:39

我想为我的一个表单创建一个全名的验证器。

可惜我不太确定该怎么做,因为这并不像想象中那么简单:

if not char in string.letters + " .'":
    raise ValidationError("...")

我以为用正则表达式就能解决,但 \w[:alpha:][a-zA-Z] 这些都不能很好地处理特殊字符。

名字示例:

  • Tiësto

  • Marie Josèphe

  • Marie Françoise

  • José de Ribas


有什么好主意吗?

哇...听起来我打开了一个麻烦的盒子!感谢大家的精彩回答。

4 个回答

2

我觉得这个主意不好。

你想排除哪些名字呢?其实没有一个国际通用的名字字符列表,也没有太多理由去禁止某些特定的字符。

13

别这样做。

请仔细阅读这个链接:程序员对名字的错误认知

1

我个人觉得验证名字没必要,因为可能的情况太多了,很难维护。如果你能想出一个正则表达式,我觉得它会太笼统,效果也不好。我能想到的唯一有价值的就是排除一些像@ # $ % ^这样的字符。

只要确保你在处理字符时做好转义就行了,比如如果某人的名字是Fooalert('lala'),那没问题,但要确保它不会被解析。

撰写回答