javascript正则表达式无效限定符错误



我有以下javascript代码:

if (url.match(/?rows.*?(?=&)|.*/g)){
        urlset= url.replace(/?rows.*?(?=&)|.*/g,"rows="+document.getElementById('rowcount').value);
}else{
    urlset= url+"&rows="+document.getElementById('rowcount').value;
}

我在/?rows.*?...上得到错误invalid quantifier。在上测试时,这个regex也能正常工作http://www.pagecolumn.com/tool/regtest.htm使用测试字符串

srt=acc_pay&showfileCL=是&shownotaryCL=是&showclientCL=否&showborrowerCL=是&shownotaryStatusCL=是&showclientStatusCL=是&showbillCL=是&showfeeCL=是&showtotalCL=是&dir=asc&关闭日期=12/01/2011&关闭日期2=12/31/2011&sort=notaryname&pageno=0&rows=任意内容&Start=0','bodytable','xyz')

在这个字符串中,上面的regex应该匹配:

行=任何

事实上,我甚至不需要/?来让它工作,但如果我不把它放在我的javascript中,它就好像它甚至不是regex。。。我对Regex时期很糟糕,所以这次让我很困惑。这个错误是我在Firefox的错误控制台中看到的唯一一个错误。

编辑

使用我上面发布的链接,前导/似乎试图匹配实际的正斜杠,而不是仅仅将代码标记为regex语句的开头。所以?在那里,所以如果它与/不匹配,它无论如何都会继续。

分辨率

好的,所以最后,我不得不把我的正则表达式改为:

/rows=.*(?=\&?)/g

这与单词"rows="后面的任何内容相匹配,直到它达到与号或用完文本为止。

您需要转义第一个?,因为它在正则表达式中具有特殊含义。

   /?rows.*?(?=&)|.*/g
//   ^---escaped

regtest.htm生成

new RegExp("?rows.?(?=\\amp;)|.",")返回SyntaxError:无效量词

您在网站中输入的值在正则表达式上不应该有/分隔符,所以输入?rows.*?(?=&)|.*也会出现同样的问题。您的JavaScript代码应该看起来像

re = /rows.*?(?=&)|.*/g;

或类似的正则表达式(但这是一个毫无意义的正则表达式,因为它匹配所有内容)。如果您无法修复,请描述您想要匹配的内容,并显示您的JavaScript

您可能会考虑重构代码,使其看起来像这样:

var url = "sort=notaryname&pageno=0&rows=anything&Start=0"
var rowCount = "foobar";
if (/[?&]rows=/.test(url))
{
    url = url.replace(/([?&]rows=)[^&]+/g,"$1"+rowCount);
}
console.log(url);

输出

sort=notaryname&pageno=0&rows=foobar&Start=0

相关内容

  • 没有找到相关文章

最新更新