在前面放一个积极的先行断言意味着什么

时间:2014-07-26 13:08:10

标签: javascript regex lookahead

我知道/box(?=.*\d)/表示只有在将来有数字时匹配box,但/(?=.*\d)box/意味着什么?

我已经使用字符串boxboxOtherTextbox3box进行了测试,发现两个RegExp匹配相同的字符。我感到很困惑。

我在阅读文章时发现了这一点:JavaScript: Password Validation using regular expressions and HTML5

作者使用/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}$/确保密码至少包含一位数字;一个小写;一个大写;总共6个字符。

1 个答案:

答案 0 :(得分:0)

/box(?=.*\d)/匹配第一个"框"然后试图断言它有一个数字是正确的(因为" 3"这是真的。)

/(?=.*\d)box/试图断言字符串中包含某个数字(由于" 3"这是真的),然后匹配第一个"框&#34 ;

前瞻不消耗字符,它只断言存在(或不存在)模式。所以"框"正则表达式'在两种情况下都应用于(并找到)字符串的开头。