正则表达式在前瞻中使用点星;

时间:2015-08-20 18:34:35

标签: javascript regex

我使用前瞻来查看字符串是否包含两个单词。 我使用

(/(?=.*festival)(?=.*math)/).test(n);

使其工作

但是,忽略.*

并不起作用
(/(?=festival)(?=math)/).test(n);

为什么我所有的前瞻都需要.*

2 个答案:

答案 0 :(得分:2)

前瞻是一个零宽度断言,紧跟前瞻的字符与表达式匹配。

(?=festival)(?=math)只会匹配以开头的字符串 festivalmath作为第一个字符,这显然是不可能的。

答案 1 :(得分:1)

(?=festival)(?=math)在一起使用时会检查字符串是否以festivalmath开头,这是不可能的。

当您使用(?=.*festival)(?=.*math)时,您正在检查字符串中单词的出现,而不一定在开头。

*用于匹配字符0次或更多次,因此.*用于匹配字符串中的任何字符0次或更多次,直到您要查找的字词为止,在这种情况下达到节日/数学。 Check thisthis