我有以下正则表达式:
^(?:[\w]+?\/)?[\w]+?@[\w]+?\.[\w]+?$
现在我需要将整个字符串长度限制为25个字符: 我尝试了以下方法:
^((?:[\w]+?\/)?[\w]+?@[\w]+?\.[\w]+?){0,25}$
但它仍然匹配超过25个字符的正则表达式,为什么?
答案 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次