我试图为人们的姓氏创造一个好的正则表达式。
如果姓氏是:
,它应该有效ABCD
ABCD' EFG
ABCD-EFG
abcd,.efg
等...
我还需要测试符号是否重复...例如:
ABCD'' EFG
ABCD - ',
无效但是那个:
abcd,.efg
可以有效。
目前我刚刚创建了这个:
^[a-z .',-_]+$
现在我试图检查所有双重符号,但我无法成功完成。
答案 0 :(得分:3)
这是一个坏主意。没有国际人员可以在其姓名中使用的允许字符列表。有些姓氏甚至包含Unicode符号 - 不可能编写一个正确完美地验证所有这些符号的正则表达式。即使你能想出一个正则表达式,它也可能过于通用而不会有效。
阅读这篇文章,了解为什么你不应该这样做:Falsehoods Programmers Believe About Names
答案 1 :(得分:1)
如果在阅读this insightful post by Amal Murali之后仍然想要使用正则表达式执行此操作,请参阅:
/^(?![^'\-_\n]*['\-_][^'\-_\n]*['\-_])[a-z .',-_]+$/m