如何构建匹配破折号/字母数字字符和“。”的自定义正则表达式。不连续的点字符?

时间:2016-02-17 19:39:57

标签: javascript regex

我需要构建一个与具有此要求的单词不匹配的正则表达式:

  1. 至少3个字符
  2. 最多32个字符
  3. number
  4. dots:a-z0-9_- ok,. nope
  5. 这就是我所做的:

    ..

    问题是我可以插入多个/[0-9a-zA-Z\-\_\.]{3,32}/ 而且我不知道如何修复它。

1 个答案:

答案 0 :(得分:3)

您可以使用以下表达式:

/(?:[\w-]|\.(?!\.)){3,32}/

说明:

  • (?: - 启动非捕获组
  • [\w-] - 字符集匹配[a-zA-Z0-9_-]
  • | - 替代,或..
  • \.(?!\.) - 如果没有跟随另一个.字符,则字面上匹配.字符的否定前瞻。
  • ) - 关闭非捕获组
  • {3,32} - 将小组匹配3到32次

如果要将整个字符串与表达式匹配,您可能还想添加锚点:

/^(?:[\w-]|\.(?!\.)){3,32}$/