如何验证人名?- Python/Django
我想为我的一个表单创建一个全名的验证器。
可惜我不太确定该怎么做,因为这并不像想象中那么简单:
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'),那没问题,但要确保它不会被解析。