簡體   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