我需要构建一个不符合以下要求的正则表达式:


至少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}$/

09-25 16:39
查看更多