Javascript 正则表达式只与一个空格匹配名称
我在js中有一个字符串条件,我必须检查文本框中输入的名称是否只包含一个空格Javascript 正则表达式只与一个空格匹配名称,javascript,regex,Javascript,Regex,我在js中有一个字符串条件,我必须检查文本框中输入的名称是否只包含一个空格 pattern: name.status === 'full_name' ? /^[a-zA-Z.+-.']+\s+[a-zA-Z.+-. ']+$/ : /^[a-zA-Z.+-. ']+$/ 但是上面的正则表达式也匹配以2个空格结尾的名称 我需要匹配它,以便输入的名称只接受一个空格作为名称字符串。因此,名称之间或末尾只有一个空格 两个观察结果:1)\s+在模式中匹配1个或多个空格,2)[+-.]匹配4个字符:+,
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
-1个或多个字母,[a-zA-Z.+'-]+
,
,+
或'
字符-
-可选空白\s?
-字符串结束$
和+
,只需从字符类中删除这些符号即可
/^\S+\s\S+$/
试试这个
一些解释:
- ^-字符串的开头
- \s-单空格
- \S-除空格外的所有内容
- “+”-量词“一个或多个”
- $-字符串结尾
- 您也可以使用单词边界
函数为完整名称{
返回/^\b\w+\b\b\w+\b$/.test;
}
[‘朱塞佩’、‘曼达托’、‘朱塞佩·曼达托’]
.forEach(item=>console.log(`isFullName${item}?${isFullName(item)}`))
如果我给出以一个空格结尾的全名,则这不会传递。需要接受在中间或结尾只接受一个空间的名称。同样,名称与2个字符串不匹配。@rubyist那么,可以有2个空格吗?是的。我的意思是,对于名称字符串,允许的最大空间为1。所以带空格的“Alex”,带空格的“Alex Christop”和带空格的“Alex Christop David”都可以。我想你应该匹配一个由1个单词或2个单词组成的字符串,如果它们之间有2个单词,就用1个空格。然后使用。我需要匹配一个可以接受1个空格的名称字符串。所以“Alex”带空格,“Alex Christop”带空格,“Alex Christop David”带空格都可以。此处,每个名称字符串之间或名称末尾只有一个空格。如果此值中没有\n
,则这不是问题(但是是的,匹配的换行符);例如,使用类似于/^[^\t]+[\t][^\t]+$/
的方法那么,您最终解决了这个问题吗?