我在js中有一個字符串條件,我必須檢查在文本框中輸入的名稱是否僅包含一個空格。只有一個空格匹配名稱的正則表達式
pattern: name.status === 'full_name' ? /^[a-zA-Z.+-.']+\s+[a-zA-Z.+-. ']+$/ : /^[a-zA-Z.+-. ']+$/
但上述正則表達式匹配的名字也以2個空格結尾。
我需要匹配它,以便輸入的名稱只能接受一個名稱字符串空間。所以這個名字在中間或末尾只有一個空格。
我在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?$/
詳細
^
- 1個或多個字母,.
,- 串[a-zA-Z.+'-]+
開始 -,'
或-
(?:\s[a-zA-Z.+'-]+)*
的零個或更多序列:
\s
- 一個單一的空白[a-zA-Z.+'-]+
- 1個或多個字母,.
,+
,'
或-
字符\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)}`))
,如果我給的全名跟一個空格結尾不流通。需要接受只接受中間或末尾一個空格的名字。也不匹配2個字符串的名稱。 – rubyist
@rubyist所以,可以有2個空格? –
是的。我的意思是說,對於名稱字符串,最多允許1個空格。所以帶空間的「Alex」,帶空間的「Alex Christop」和帶空間的「Alex Christop David」都可以。 – rubyist