我在js中有一个字符串条件,我必须检查在文本框中输入的名称是否只包含一个空格。
pattern: name.status === 'full_name' ? /^[a-zA-Z.+-.']+\s+[a-zA-Z.+-. ']+$/ : /^[a-zA-Z.+-. ']+$/
但是上面的正则表达式匹配以2个空格结尾的名称。
我需要匹配它,以使输入的名称只接受一个名称字符串的空格。因此,名称之间或末尾只有一个空格。
答案 0 :(得分:0)
两个观察结果:1)您的模式中的\s+
匹配1个或更多个空格,2)[+-.]
匹配4个字符:+
,,
,{{1} }和-
,因此最好将连字符放在字符类的末尾。
您可以使用
.
请参阅regex demo
<强>详情
/^[a-zA-Z.+'-]+(?:\s[a-zA-Z.+'-]+)*\s?$/
- 字符串开头^
- 一个或多个字母,[a-zA-Z.+'-]+
,.
,+
或'
-
- 零个或多个序列:
(?:\s[a-zA-Z.+'-]+)*
- 一个空白\s
- 一个或多个字母,[a-zA-Z.+'-]+
,.
,+
或'
字符-
- 一个可选的空格\s?
- 字符串结束。注意:如果“名称”不能包含$
和.
,请从字符类中删除这些符号。
答案 1 :(得分:0)
text1 CIF BILL
48752614P 87451,45
text2 CLIENT MONEY HOUSE
JOHN 450 2541
text3 NAME CIF
MERY [47852361N, 4587563O]
试试这个
一些解释:
答案 2 :(得分:0)
你也可以使用单词边界......
function isFullName(s) {
return /^\b\w+\b \b\w+\b$/.test(s);
}
['Giuseppe', 'Mandato', 'Giuseppe Mandato']
.forEach(item => console.log(`isFullName ${item} ? ${isFullName(item)}`))
&#13;