【问题标题】:name validation with regular expression使用正则表达式进行名称验证
【发布时间】:2018-09-11 01:59:46
【问题描述】:

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

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

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

【问题讨论】:

  • 您的正则表达式允许 16 个字符的名称。
  • 字符也可以表示空格吗?
  • @NiettheDarkAbsol 我刚刚编辑了它。我意识到并编辑了它。
  • @MagedSaeed 你似乎掩盖了我的评论。空格是否被视为您的代码的有效字符?
  • 在我看来它仍然可以包含 16 个字符 (1 + 14 + 1)。中间的表达式应该是{3,13}

标签: javascript regex


【解决方案1】:

你可以使用

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

请参阅regex demo

详情

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

JS 演示:

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));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 2014-12-25
    • 2014-04-21
    • 2020-12-03
    相关资源
    最近更新 更多