2010-12-14 112 views
3

谷歌失败我,因为?=不可搜索。简单的JavaScript正则表达式的问题

(?=[aeiouy]) 

match - specific?=,我知道[aeiouy]是aeiouy中的任何一个。

+1

谷歌是不是永远是最好的地方开始。如果您正在寻找有关正则表达式的信息,您最好先访问http://www.regular-expressions.info/。 – Lekensteyn 2010-12-14 20:13:37

+0

或者你可以找出你可以搜索的东西。例如:“JavaScript正则表达式语法”出现了一些有希望的结果。第一个有你的问题的答案。 – 2010-12-14 20:19:10

回答

6

?=positive lookahead的语法,它匹配任何东西后跟这里是一个元音。

+0

参见:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp – 2010-12-14 20:13:19

5

它匹配任何地方,下一个字符是一个aeiouy,但它并没有该字符匹配 - 看http://www.rubular.com/r/Tjq3ocLMVJ

具体来说,(?=...)被称为“超前”和它验证以下组块是本

3

MDC来自:

X(= Y? )

匹配X仅当x ý随后

例如,/插孔(?=鲱)/匹配'杰克仅当后跟“鲱”。 /杰克(?=斯普拉特|弗罗斯特)/匹配'杰克'只有后面跟着'斯普拉特'或'弗罗斯特'。然而,“斯普拉特”和“弗罗斯特”都不是比赛结果的一部分。

所以:

foo(?=[aeiouy]) 

将匹配fooefooi等而不是单独foo,但在报价已经指出,在这种情况下,元音字母将不会被包括在比赛本身。

0

比方说,你的字符串是 “bbbbae”,然后选择 “(?= [aeiouy])” 匹配无论是 'A' 或 'E',当前 'A' 的任何地方使用。

+0

不是真的。它与字符不匹配,它匹配*字符前的*空格。它只在* b和'a'之间以及在'a'和'e'之间,而不仅仅是在'a'之前的任何地方“。 – 2010-12-14 21:11:11