我使用前瞻来查看字符串是否包含两个单词。 我使用
(/(?=.*festival)(?=.*math)/).test(n);
使其工作
但是,忽略.*
:
(/(?=festival)(?=math)/).test(n);
为什么我所有的前瞻都需要.*
?
答案 0 :(得分:2)
前瞻是一个零宽度断言,紧跟前瞻的字符与表达式匹配。
(?=festival)(?=math)
只会匹配以开头的字符串 festival
和math
作为第一个字符,这显然是不可能的。
答案 1 :(得分:1)
(?=festival)(?=math)
在一起使用时会检查字符串是否以festival
和math
开头,这是不可能的。
当您使用(?=.*festival)
或(?=.*math)
时,您正在检查字符串中单词的出现,而不一定在开头。
*
用于匹配字符0次或更多次,因此.*
用于匹配字符串中的任何字符0次或更多次,直到您要查找的字词为止,在这种情况下达到节日/数学。
Check this和this。