繁体   English   中英

正则表达式接受带空格但没有特殊字符的名字和姓氏

[英]Regex to accept first and last name with a space but no special characters

所以我试图想出正则表达式来接受名字和姓氏,但名字和姓氏是强制性的。 除了 - 和 , 和 之外,不允许使用特殊字符。 和 ' 我还想让名字和姓氏的最小长度分别为 2 个字符。

一些例子。 无效 - 名字

无效 - 姓氏

无效 - f 姓氏

无效 - 名字 l

有效 - 名字姓氏

有效 - f-name 姓氏

有效 - fname l'name

我有这个正则表达式(.*)([A-Za-z ,.'-]){2} ([A-Za-z ,.'-]){2}(.*)似乎适用于一切除了排除其他特殊字符,如 !@ 等。我认为问题是因为我们必须匹配名字和姓氏的最小长度,以及上面正则表达式中可接受的字符。 但是通过排除其他特殊字符,它本质上颠倒了逻辑。

这是我的正则表达式

对于那些感兴趣的人更新我使用两个正则表达式匹配来解决这个问题。 第二个正则表达式用于多个允许的特殊字符。

var match = nameVal.match(/^[A-Za-z][A-Za-z,.'-]+ +[A-Za-z][A-Za-z,.'-]+$/gm);
var match2 = nameVal.match(/([.,\-']{2})/g);

感谢@tshiono 的帮助。

请您尝试以下操作:

^[A-Za-z,.'-]{2,} +[A-Za-z,.'-]{2,}$

演示

如果您希望名字和姓氏以特殊字符开头,请尝试:

^[A-Za-z][A-Za-z,.'-]+ +[A-Za-z][A-Za-z,.'-]+$

[更新]
至于fork要求不要重复特殊字符,怎么样:

^(?:(?:[A-Za-z]|([,.'-]))(?!(?:.*?\1))){2,} +(?:(?:[A-Za-z]|([,.'-]))(?!(?:.*?\2))){2,}$

演示2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM