2013-08-26 70 views
0

我想創建一個帶有JavaScript變量的新的RegExp。但我有麻煩時,我想創建一個新lookaround RegExpJavascript正則表達式:用變量創建一個新的lookbehind正則表達式?

var xvar = "_on"; 
var regex = new RegExp("(?<!" + xvar + ")(.gif|.jpg|.png)$"); 
#=> SyntaxError: Invalid regular expression: /(?<!_on)(.gif|.jpg|.png)$/: Invalid group 

我試圖逃跑所有特殊字符遵循Creating regexp with special characters,那麼它可以創建一個新的RegExp但就像一個字符串,而不是環視正則表達式。

/\(\?<!_on\)\(\.gif\|\.jpg\|\.png\)\$/ 

任何人都可以幫助我嗎?

+3

Javascript不支持向後看。 – falsetru

+0

一種方法是扭轉字符串...取決於你在做什麼。 –

+1

最終目標是什麼?爲什麼不能像''(?:「+ xvar +」)(.gif | .jpg | .png)那樣使用正常的非捕獲組? –

回答

-2

我不知道你的目標是RegExp但是量化器(...)在這種情況下會導致錯誤。例如,使用非捕獲括號(?:...)

var regex = new RegExp("(?:<!" + xvar + ")(?:.gif|.jpg|.png)$"); 

參考:Regular Expressions - JavaScript | MDN

@Alan Moore:你說得對。

+4

他並不試圖匹配'<!',他試圖使用負面lookbehind,這在JavaScript正則表達式中不受支持。 –

相關問題