2012-03-06 84 views
0
var pattern = /(?<=\?)(.*?)(?=\=)/; 

正在拋出「無效量詞」錯誤。RegEx無效量詞

我已經試過:

var regexp = new RegExp("(?<=\?)(.*?)(?=\=)"); 

無濟於事無論是。我試圖逃避=標誌和反斜槓。我很茫然。

我該如何解決這個問題?

+2

JavaScript不支持後視。 – 2012-03-06 19:52:39

+0

我找到了解決方法。顯然,當我散列urlObj並應用匹配「?」的模式時+ string +「=」...它返回一個數組...所以它很混亂,但它完美的工作。 'var pattern = /(\?)(.*?)(==)/; \t var urlType = urlObj.hash.match(pattern)[2];' – TSNev 2012-03-06 20:38:00

+0

如果你只是想這樣,'/\?(.*?)=/。exec(urlObj.hash)[1]'也可以工作。 – 2012-03-06 20:41:21

回答

0

如果添加:在年代後它應該工作。

var pattern = /(?:<=\?)(.*?)(?:=\=)/; 
+1

'?:'解散一個組。 OP希望使用他從其他RegEx實現中瞭解的look-behind。 – 2012-03-06 19:54:47

0

爲什麼您需要後視?你試圖匹配?data=類型模式吧?不要只是?,吃吧。 :)

var data = "halsfdkjad;slfkjasdfj?data=uhtooiuhiouh?oiurhoiuhhhjkjj=9"; 
var myregexp = /\?(.*?)(?=\=)/g; 
var match = myregexp.exec(data); 
var result = "Matches found:\n"; 
while (match != null) { 
    result += "match:" + RegExp.$1 + '\n'; 
    match = myregexp.exec(data); 
} 
alert(result); 
0

我找到了解決方法。顯然,當我散列urlObj並應用匹配「?」的模式時+ string +「=」...它返回一個數組......它很雜亂,但它完美的工作。

var pattern = /(\?)(.*?)(\=)/; 
var urlType = urlObj.hash.match(pattern)[2];