我有以下javascript代码:
if (url.match(/?rows.*?(?=\&)|.*/g)){
urlset= url.replace(/?rows.*?(?=\&)|.*/g,"rows="+document.getElementById('rowcount').value);
}else{
urlset= url+"&rows="+document.getElementById('rowcount').value;
}
我在invalid quantifier
收到错误/?rows.*?...
。使用测试字符串
SRT = acc_pay&安培; showfileCL = YES&安培; shownotaryCL = YES&安培; showclientCL =否安培; showborrowerCL = YES&安培; shownotaryStatusCL = YES&安培; showclientStatusCL = YES&安培; showbillCL = YES&安培; showfeeCL = YES&安培; showtotalCL = YES&安培; DIR = ASC&安培; closingDate = 12月1日/ 2011&安培; closingDate2 = 12/31/2011&安培;排序= notaryname&安培;您做生意= 0&安培;行=什么&安培;开始= 0' , 'bodytable', 'XYZ')
在此字符串中,上述正则表达式应匹配:
行=任何
我实际上甚至不需要/?
来使它工作,但如果我不把它放到我的javascript中,它就像它甚至不是正则表达式...我对Regex很糟糕期间,所以这个让我很困惑。而且这个错误是我在Firefox的错误控制台中唯一获得的错误。
修改
使用上面发布的链接,似乎前导/
尝试匹配实际的正斜杠,而不是仅仅将代码标记为正则表达式语句的开头。因此,?
就在那里,如果它与/
不匹配,那么无论如何都会继续。
解决
好的,最后,我不得不改变我的正则表达式:
。/行数= *(?= \&安培;)/ G
这匹配单词“rows =”后跟任何内容,直到它击中&符号或用完文本。
答案 0 :(得分:4)
你需要转义第一个?
,因为它在正则表达式中具有特殊含义。
/\?rows.*?(?=\&)|.*/g
// ^---escaped
答案 1 :(得分:2)
regtest.htm生成
新的RegExp(“?rows。?(?= \&)|。”,“”)返回一个SyntaxError:无效 量词
您放入网站的价值不应该在正则表达式上有/
分隔符,因此请放入?rows.*?(?=\&)|.*
并显示相同的问题。您的JavaScript代码应该是
re = /rows.*?(?=\&)|.*/g;
或类似(但这是一个毫无意义的正则表达式,因为它匹配所有东西)。如果您无法修复,请描述您要匹配的内容并显示您的JavaScript
答案 2 :(得分:0)
您可以考虑重构代码,使其看起来像这样:
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