用正则表达式进行名称验证

时间:2018-04-01 18:32:37

标签: javascript regex

我正在尝试使用以下规则验证javascript中的名称字段:

  • 名称介于5到15个字符之间。
  • 信件可能是大写或小写字母。
  • 姓名必须以字母开头和结尾。
  • 允许使用空格,但不允许使用数字。

我尝试过以下正则表达式,但我想确定它是否正确。 re = /^[a-z][a-z\s]{3,14}[a-z]$/i;

1 个答案:

答案 0 :(得分:1)

您可以使用

/^(?=.{5,15}$)[a-z]+(?:\s+[a-z]+)*$/i

请参阅regex demo

<强>详情

  • ^ - 字符串开头
  • (?=.{5,15}$) - 一个积极的先行,只检查从字符串的开头到字符串的结尾是否有除断行字符之外的任何5到15个字符(这是非消耗的模式,当模式匹配时,正则表达式索引位于字符串的开头)
  • [a-z]+ - (消费模式的开头)1个或多个ASCII字母
  • (?:\s+[a-z]+)* - 重复0次以上
    • \s+ - 一个或多个空格
    • [a-z]+ - 1+ ASCII字母
  • $ - 字符串结束。

JS演示:

&#13;
&#13;
var rx = /^(?=.{5,15}$)[a-z]+(?: +[a-z]+)*$/i;
var strs = ["abcde abcde abc","abcde abcde","abcde abcdeabcde","abcde abcd1","abcdeabcde"];
for (var s of strs) {
  console.log(s,"=>",rx.test(s));
}
&#13;
&#13;
&#13;