2010-12-14 51 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