[Alphanumeric] [alphanumeric。-_ @] 31个字符的正则表达式建议

时间:2016-06-14 07:11:15

标签: javascript regex

我希望在javascript中使用正则表达式进行名称检查。

  1. 该值可以包含字母数字和以下特殊字符 (' - ','。'' _'和' @')。
  2. 它应始终以字母数字字符开头。
  3. 它不应该是空字符串。
  4. 此参数的最大允许长度为31个字符。
  5. 此参数不区分大小写。
  6. 我想出了这个,但感觉不对。关于如何让它变得万无一失的任何建议?

    ^[A-Za-z0-9]+[A-Za-z0-9_@-.]{30}
    

3 个答案:

答案 0 :(得分:4)

你很接近,这是正确的正则表达式:

/^[a-z0-9][\w@.-]{0,30}$/i

我应用了以下变化:

  • 在末尾添加$
  • 使用i-modifier来区分大小写
  • a-zA-Z0-9_替换为\w并将-移至字符类的末尾
  • 将固定重复{30}更改为{0,30}

通过一些单元测试来查看Regex101-Demo

答案 1 :(得分:1)

^[A-Za-z0-9][A-Za-z0-9_@.-]{0,30}
  • -放在括号中,因此不会被用作范围
  • 允许1-31个字符{,30}
  • 在第一个字符后删除+(没有它,你会得到> 31个字符)

答案 2 :(得分:1)

您可以随时访问www.regexr.com

查看您的模式
  • 你需要逃避' - '使用和反斜杠:\-
  • 您需要删除中间部分的
  • {30}更改为{0,30},因为它不需要长度为31个字符
  • 将\ i添加到最后以区分大小写并删除A-Z部分
  • 使用$
  • 关闭模式

结果如下所示:

/[a-z0-9][a-z0-9@\-._]{0,30}/i