У меня есть следующий код 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.*?...
.Это же регулярное выражение работает при его тестировании на http://www.pagecolumn.com/tool/regtest.htm с использованием тестовой строки
? Srt = acc_pay & showfileCL = yes & shownotaryCL = yes & showclientCL = no & showborrowerCL = yes & shownotaryStatusCL = yes & showclientStatusCL = yes & showe = yes & show = yes & yes = yes & showfell & show & show & yes> yes & showfellasc & ClosingDate = 12/01/2011 & ClosingDate2 = 12/31/2011 & sort = notaryname & pageno = 0 & rows = everything & Start = 0 ',' bodytable ',' xyz ')
В этой строке предполагается, что приведенное выше регулярное выражениеmatch:
строки = что-нибудь
На самом деле мне даже не нужно /?
, чтобы заставить его работать, но если я не положу это в свойjavascript, он действует так, как будто он даже не является регулярным выражением ... Я ужасен с периодом регулярного выражения, так что это меня сильно смущает.И эта ошибка является единственной, которую я получаю в консоли ошибок Firefox.
РЕДАКТИРОВАТЬ
Используя эту ссылку, которую я разместил выше, кажется, что ведущая /
пытаетсячтобы соответствовать действительному наклонному слешу вместо того, чтобы просто пометить код как начало оператора регулярного выражения.Таким образом, ?
находится там, так что если он не соответствует /
ни с чем, он все равно продолжается.
РАЗРЕШЕНИЕ
Хорошо, так что вВ конце я должен был изменить свое регулярное выражение на это:
/ rows =. * (? = \ &?) / g
Это соответствовало слову "строки"= "сопровождается чем-либо, пока не достигнет амперсанда или не закончится текст.