正则表达式,只匹配一个空格的名称

时间:2017-08-08 09:53:34

标签: javascript regex

我在js中有一个字符串条件,我必须检查在文本框中输入的名称是否只包含一个空格。

 pattern: name.status === 'full_name' ? /^[a-zA-Z.+-.']+\s+[a-zA-Z.+-. ']+$/ : /^[a-zA-Z.+-. ']+$/

但是上面的正则表达式匹配以2个空格结尾的名称。

我需要匹配它,以使输入的名称只接受一个名称字符串的空格。因此,名称之间或末尾只有一个空格。

3 个答案:

答案 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]

试试这个

一些解释:

  • ^ - 字符串的开头
  • \ s - 单个空白
  • \ S - 除空格外的所有内容
  • &#34; +&#34; - 量词&#34;一个或多个&#34;
  • $ - 字符串结尾

答案 2 :(得分:0)

你也可以使用单词边界......

&#13;
&#13;
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;
&#13;
&#13;