我碰到一段代碼來這樣的:瞭解JavaScript的替代
btnHref.replace(/myCode=([^&]*)/, 'myCode=' + itm.MyCode);
我理解一般的替換功能([文本替換],[文本與替換])
不過我不太明白是怎麼回事:
/myCode=([^&]*)/
它尋找「mycode的=」,我假設剩下的就是爲「=」之後的任何字符正則表達式。
但是我沒有得到我想要的結果..
例子:
var myParams = 'myCode=' + itm.ReportCode + '&myVersion=' + itm.ReportVersion;
if (btnHref.indexOf('myCode') > -1) {
btnHref = btnHref.replace(/myCode=([^&]*)/, myParams);
} else {
btnHref += btnHref.indexOf('?') > -1 ? '&' + myParams : '?' + myParams;
}
第一次通過一切都很好。 (它擊中else語句)
但是通過第二次(它碰到的第一個語句在IF)和我結束了一串:
/MyController/MyAction?myCode=AAA&myVersion=1.1&myVersion=2.2
我誤解正則表達式是什麼?
這就是爲什麼你應該永遠* *使用正則表達式時,你真的需要一個解析器一個很好的例子。 [查詢字符串比他們看起來更細微](http://zzzzbov.com/blag/querystring-hell),所以我總是推薦使用解析庫。 [我寫了一個](https://www.npmjs.com/package/querystringjs),雖然還有很多其他可用的。 – zzzzBov