我有以下的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;
}
我得到的错误invalid quantifier
在/?rows.*?...
。使用测试串
?srt=acc_pay&showfileCL=yes&shownotaryCL=yes&showclientCL=no&showborrowerCL=yes&shownotaryStatusCL=yes&showclientStatusCL=yes&showbillCL=yes&showfeeCL=yes&showtotalCL=yes&dir=asc&closingDate=12/01/2011&closingDate2=12/31/2011&sort=notaryname&pageno=0&rows=anything&Start=0','bodytable','xyz')
在此字符串上http://www.pagecolumn.com/tool/regtest.htm测试时,这个相同的正则表达式的工作,上述正则表达式应该匹配:
rows=anything
其实我也不需要/?
得到它的工作,但如果我没有把它放入我的JavaScript,它的行为就像它甚至不是正则表达式...我正确地使用正则表达式时期,所以这一个让我很困惑。而这个错误是我在Firefox的错误控制台中遇到的唯一错误。
编辑
使用该链接我张贴以上,似乎导致/
尝试匹配的实际正斜杠,而不是仅仅将代码标记为正则表达式语句的开始。所以?
就在那里,所以如果它不匹配/
任何东西,它仍然继续。
解决方案
好了,到了最后,我有我的正则表达式改成这样:
/rows=.*(?=\&?)/g
此相匹配的单词“行=”后面是什么,直到它击中了一个符号或用完文字。
什么是你期望领先的“?”意思是? – Pointy 2012-02-01 22:24:04
我正在使用它,即使'/'不匹配任何东西,它也不会返回false。 – James 2012-02-01 22:45:46
那么你想把其余的正则表达式放在括号中,并把“?” **之后**,而不是之前。量词总是在他们所指的事物之后出现**。 – Pointy 2012-02-01 22:49:58