RegEx无效量词

时间:2012-03-06 19:49:48

标签: javascript regex match

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

正在抛出“无效量词”错误。

我试过了:

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

无济于事。我试图逃避=标志和反斜杠。我很茫然。

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:2)

正如所说,JavaScript不支持lookbehinds。您可以在此处找到有用的解决方法:http://blog.stevenlevithan.com/archives/mimic-lookbehind-javascript

答案 1 :(得分:0)

似乎javascript Regexp不支持(?<...)

  

根本不支持Lookbehind。

http://www.regular-expressions.info/javascript.html

答案 2 :(得分:0)

如果你添加:?之后它应该有效。

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

答案 3 :(得分: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);

答案 4 :(得分:0)

我找到了解决方法。显然,当我对urlObj进行散列并应用与“?”匹配的模式时+ string +“=”...它返回一个数组......它很乱,但效果很好。

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