姓氏正则表达式

时间:2014-08-12 13:20:50

标签: javascript regex

我试图为人们的姓氏创造一个好的正则表达式。

如果姓氏是:

,它应该有效

ABCD

ABCD' EFG

ABCD-EFG

abcd,.efg

等...

我还需要测试符号是否重复...例如:

ABCD'' EFG

ABCD - ',

无效但是那个:

abcd,.efg

可以有效。

目前我刚刚创建了这个:

^[a-z .',-_]+$

现在我试图检查所有双重符号,但我无法成功完成。

2 个答案:

答案 0 :(得分:3)

这是一个坏主意。没有国际人员可以在其姓名中使用的允许字符列表。有些姓氏甚至包含Unicode符号 - 不可能编写一个正确完美地验证所有这些符号的正则表达式。即使你能想出一个正则表达式,它也可能过于通用而不会有效。

阅读这篇文章,了解为什么你不应该这样做:Falsehoods Programmers Believe About Names

答案 1 :(得分:1)

如果在阅读this insightful post by Amal Murali之后仍然想要使用正则表达式执行此操作,请参阅:

/^(?![^'\-_\n]*['\-_][^'\-_\n]*['\-_])[a-z .',-_]+$/m

View a regex demo!