javascript正则表达式无效量词错误

javascript正则表达式无效量词错误,javascript,regex,quantifiers,Javascript,Regex,Quantifiers,我有以下javascript代码: if (url.match(/?rows.*?(?=\&)|.*/g)){ urlset= url.replace(/?rows.*?(?=\&)|.*/g,"rows="+document.getElementById('rowcount').value); }else{ urlset= url+"&rows="+document.getElementById('rowcount').value; } 我在/

我有以下javascript代码:

if (url.match(/?rows.*?(?=\&)|.*/g)){
        urlset= url.replace(/?rows.*?(?=\&)|.*/g,"rows="+document.getElementById('rowcount').value);
}else{
    urlset= url+"&rows="+document.getElementById('rowcount').value;
}
我在
/?行中得到错误
无效的量词
。.
。当使用测试字符串对其进行测试时,这个正则表达式也会起作用

?srt=acc_pay&showfileCL=yes&shownotaryCL=yes&showclientCL=no&showborrowerCL=yes&showclientStatusCL=yes&showbillCL=yes&showfeeCL=yes&showtotalCL=yes&dir=asc&closingDate=12/01/2011&closingDate=12/31&sort=notaryname&pageno=0&rows=anything&Start=0'、'bodytable'、'xyz')

在这个字符串中,上面的正则表达式应该匹配:

行=任何东西

实际上,我甚至不需要
/?
来让它工作,但是如果我不把它放到我的javascript中,它就好像它甚至不是正则表达式一样。。。我对正则周期很糟糕,所以这一个让我很困惑。这个错误是我在Firefox的错误控制台中遇到的唯一错误

编辑

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

分辨率

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

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


这与单词“rows=”匹配,后跟任何内容,直到它碰到一个符号或文本用尽。

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

   /\?rows.*?(?=\&)|.*/g
//   ^---escaped
regtest.htm生成

新的RegExp(“?行.?(?=\&)|.”,“”)返回了一个语法错误:无效 量词

您输入网站的值在正则表达式上不应该有
/
分隔符,因此输入
?行。*(?=\&)|。*
,它显示了相同的问题。您的JavaScript代码应该如下所示

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

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

< P>你可以考虑重构你的代码看起来像这样:

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


你希望前导“?”是什么意思?我使用它是为了在
/
不匹配的情况下也不会返回false。然后你想把剩余的正则表达式放在括号中,并在其后,而不是之前放“?”。量词总是在它们所指的事物之后。而且前导“/”并不试图匹配“/”字符。这是正则表达式常量的本机JavaScript语法的一部分。@Pointy这是我的想法,但我无法在该网站上使用它。然而,这可能只是因为我不必指定该部分,因为网站为我添加了它。不太清楚。明天上班时,我不带
试试看。不过,你应该把它作为一个答案贴出来。我不想让它漏掉。我现在有它,因为没有第一个
/
,脚本无法识别它是regex。因此,我添加了
,这样,如果它找到它0次,它仍然可以工作。我没有试图匹配字符串中的实际问号。谢谢。@James:你说的是第一个
/
,对吗?这不是正则表达式本身的一部分。它只是用于创建正则表达式的文字符号的一部分。如果您希望它在找到0个项时工作,那么为什么要使用正则表达式呢?我认为你需要退一步,描述一下你真正想要达到的目标。@Borodin:当然。提问者没有明确定义应该匹配什么,所以我的回答解释了问题中指出的错误原因。从评论中可以看出,询问者似乎试图使用
禁用正则表达式。显然,这行不通。我在等待澄清。是的,波蒂在评论中也是这么说的。我想这是我的问题。在线正则表达式测试员把我弄糊涂了。如果他们不把自己的答案贴出来,我就把它标记为答案。但如果他们这样做了,我将不得不标记他们的,因为他们首先从技术上回答了这个问题。谢谢你。