使用正则表达式验证名称

时间:2015-07-16 19:09:05

标签: javascript regex

我需要正则表达式的帮助。我应该如何编写正则表达式代码以符合以下条件?

  1. 它由至少两个以空格分隔的名称
  2. 组成
  3. 所有以空格分隔的名称,至少包含2个字符
  4. 至少一个以空格分隔的名称至少为4个字符
  5. 我想用正向前瞻代码(?=...)来编写它。一些名称的例子:

    有效:

      亨德里克阿格斯       Jo Ha Kunts
          Craig Wood-Stone

    无效:

      

    约翰
          亨德里克A.
          Ee Ff Gg

2 个答案:

答案 0 :(得分:0)

我想出了以下正则表达式:

(\w{2,}[ ]+\w{4,})|(\w{4,}[ ]+\w{2,})

匹配至少为2的数字中的单词字符,后跟空格,后跟至少为4的数量的单词字符。或者相反的单词。

var words = ["Hendrik Argus", "Jo Ha Kunts", "Craig Wood-Stone", "Johannes", "Hendrik A.", "Ee Ff Gg" ];

var regex = /(\w{2,}[ ]+\w{4,})|(\w{4,}[ ]+\w{2,})/

words.forEach( function(word) {
  var matches = word.search(regex) != -1;
  console.log('"' + word + '" is valid name : ' + matches);
});

DEMO and explanation

答案 1 :(得分:0)

谢谢大家回答。

我通过以下代码解决了我的问题:

^(?=。?[A-Za-z - ] {4,})[] (?:[A-Za-z - ] {2,}(?:[ ] {1} [A-ZA-Z - ] {2,})+)* $