为什么量词不起作用

时间:2016-03-03 11:10:29

标签: javascript regex

我有以下正则表达式:

^(?:[\w]+?\/)?[\w]+?@[\w]+?\.[\w]+?$

现在我需要将整个字符串长度限制为25个字符: 我尝试了以下方法:

^((?:[\w]+?\/)?[\w]+?@[\w]+?\.[\w]+?){0,25}$

但它仍然匹配超过25个字符的正则表达式,为什么?

3 个答案:

答案 0 :(得分:4)

量词将应用于其前面的标记。在您的情况下,这是一个完整的组,并且该组可以匹配多于一个字符。

使用positive lookahead assertion

分别进行长度检查
^(?=.{0,25}$)(?:\w+\/)?\w+@\w+\.\w+$

正如您所看到的,您的正则表达式也可以简化(不需要延迟量词和字符类)。

答案 1 :(得分:2)

为什么不简单

comments

答案 2 :(得分:1)

如果我们打电话给你原来的正则表达式A

^(?:[\w]+?\/)?[\w]+?@[\w]+?\.[\w]+?$

然后你的下一个正则表达式可以更简单地表达为

^(A){0,25}$

因此,您只匹配25个字符,并且匹配A 0到25次