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

は「無効な量指定子」エラーをスローしています。RegEx invalid quantifier

私が試してみた:

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

無駄にどちらか。私は=記号とバックスラッシュをエスケープしようとしました。私は迷っている。

どうすればこの問題を解決できますか?

+2

JavaScriptはルックバックをサポートしていません。 –

+0

回避策が見つかりました。どうやら、私はurlObjをハッシュし、 "?"と一致するパターンを適用すると、 + string + "=" ...これは配列を返します...だから面倒ですが、完全に動作します。 'varパターン= /(\?)(.*?)(\=)/; \t var urlType = urlObj.hash.match(pattern)[2]; ' – TSNev

+0

もしあなたがただそれを望むなら、' /\?(.*?)=// exec(urlObj.hash)[1] 'も動作します。 –

答えて

0

:? 'Sの後にそれが動作するはずです。

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

'?:'グループを参照解除します。 OPは、他のRegExの実装から知っているルックバックを使用したいと考えています。 –

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];