<分区>
我有以下正则表达式:
^(?:[\w]+?\/)?[\w]+?@[\w]+?\.[\w]+?$
现在我需要将整个字符串长度限制为 25 个字符: 我尝试了以下方法:
^((?:[\w]+?\/)?[\w]+?@[\w]+?\.[\w]+?){0,25}$
但它仍然匹配超过 25 个字符的正则表达式,为什么?
标签 javascript regex
<分区>
我有以下正则表达式:
^(?:[\w]+?\/)?[\w]+?@[\w]+?\.[\w]+?$
现在我需要将整个字符串长度限制为 25 个字符: 我尝试了以下方法:
^((?:[\w]+?\/)?[\w]+?@[\w]+?\.[\w]+?){0,25}$
但它仍然匹配超过 25 个字符的正则表达式,为什么?
最佳答案
量词应用于它前面的标记。在您的情况下,这是一个完整的组,并且该组可以匹配的不仅仅是一个字符。
使用 positive lookahead assertion 分别进行长度检查:
^(?=.{0,25}$)(?:\w+\/)?\w+@\w+\.\w+$
如您所见,您的正则表达式也可以大大简化(不需要惰性量词和字符类)。
关于javascript - 为什么量词不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35770556/