正则表达式无效量词

RegEx invalid quantifier

本文关键字:量词 无效 正则表达式      更新时间:2023-09-26
var pattern = /(?<='?)(.*?)(?='=)/;

引发"无效量词"错误。

我试过:

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

也无济于事。我试图转义 = 符号和反斜杠。我不知所措。

我该如何解决这个问题?

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

看起来,javascript Regexp不支持(?<...)

完全不支持后视。

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

如果在 ?' 之后添加 :它应该工作。

var pattern = /(?:<='?)(.*?)(?:='=)/;
为什么

需要后看? 您正在尝试匹配?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);

我找到了解决方法。显然,当我对 urlObj 进行哈希处理并应用与"?" + 字符串 + "="匹配的模式时......它返回一个数组...它很混乱,但它工作得很好。

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