我需要构建一个不符合以下要求的正则表达式:
至少3个字符
最多32个字符
仅a-z0-9_-
。
点:.
好,..
不
这就是我所做的:
/[0-9a-zA-Z\-\_\.]{3,32}/
问题是我可以插入多个
.
,但我不知道如何解决。 最佳答案
您可以使用以下表达式:
/(?:[\w-]|\.(?!\.)){3,32}/
说明:
(?:
-非捕获组的开始[\w-]
-字符集匹配[a-zA-Z0-9_-]
|
-替代,或\.(?!\.)
-负向超前查找,如果不跟另一个.
字符,则按字面意义匹配该.
字符。)
-关闭非捕获组{3,32}
-将组匹配3至32次如果要将整个字符串与表达式匹配,则可能还需要添加锚点:
/^(?:[\w-]|\.(?!\.)){3,32}$/