[英]regular expression to match name with only one spaces
我在js中有一個字符串條件,我必須檢查在文本框中輸入的名稱是否僅包含一個空格。
pattern: name.status === 'full_name' ? /^[a-zA-Z.+-.']+\s+[a-zA-Z.+-. ']+$/ : /^[a-zA-Z.+-. ']+$/
但是上面的正則表達式也匹配以2個空格結尾的名稱。
我需要對其進行匹配,以使輸入的名稱只能接受一個空格作為名稱字符串。 因此,名稱之間或末尾只有一個空格。
兩個觀察:1) \\s+
中的模式匹配1個或多個空格,以及2) [+-.]
匹配4個字符: +
, ,
, -
和.
,因此最好將連字符放在字符類的末尾。
您可以使用
/^[a-zA-Z.+'-]+(?:\s[a-zA-Z.+'-]+)*\s?$/
細節
^
-字符串開頭 [a-zA-Z.+'-]+
-1個或多個字母, .
, +
, '
或-
(?:\\s[a-zA-Z.+'-]+)*
-零個或多個序列:
\\s
單個空格 [a-zA-Z.+'-]+
-1個或多個字母, .
, +
, '
或-
字符 \\s?
-可選的空格 $
-字符串結尾。 注意:如果“名稱”不能包含.
和+
,只需從字符類中刪除這些符號即可。
/^\S+\s\S+$/
嘗試這個
一些解釋:
您還可以使用單詞邊界...
function isFullName(s) { return /^\\b\\w+\\b \\b\\w+\\b$/.test(s); } ['Giuseppe', 'Mandato', 'Giuseppe Mandato'] .forEach(item => console.log(`isFullName ${item} ? ${isFullName(item)}`))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.