2016-11-28 36 views
1

我有一個正則表達式看起來像下面這樣:JavaScript的正則表達式匹配的所有字符串不是指定字符串

var myRegex = /%([a-z_]*)%/i

這任何字符串,如%foo%其中一個字符串是兩個引號之間的匹配。

什麼是修改此正則表達式的最佳方式,以便它只匹配當正則表達式匹配時%包圍任何東西,但字符串foo?所以它不會匹配%foo%,但它會匹配%bar_%%anythingelse%

回答

3

你在這裏尋找一個負前瞻:

var myRegex = /%(?!foo%)([a-z_]*)%/i; 

(?!foo%)是負先行將斷言失敗時,我們有foo%領先的%因而無法%foo%

+0

難道這不正確不匹配'%foolkajsdksad%'? – Jay

+1

@Jay不,因爲'foo%'是一個字符串文字。 'foo'和'%'之間沒有通配符 – Jecoms

+1

@Jay Nope,因爲負向前視查找'foo%'而不是'foo' – Gavin

相關問題