我有以下的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