

這樣寫的話,在chrome上決議是報錯的。
但是在一些在線的正則測驗網站上,是可以匹配成功的。。。如何改寫,才能讓圖上的代碼在chrome中匹配成功呢?
var kk='?s=55&t=88'
var reg = new RegExp("(^|\?|&)s=(.*)[&$]")
var s = kk.match(reg)
console.log(s)
uj5u.com熱心網友回復:
"\?"表示的是字串?"\\?"或者"\\\?"表示的才是字串\?
原因是""表示的字串中反斜杠會被轉義
uj5u.com熱心網友回復:
因為 new RegExp("(^|\?|&)s=(.*)[&$]") 是先定義一個字串,再用這個字串來創建正則運算式物件。在定義字串時,js源代碼中定義的"(^|\?|&)s=(.*)[&$]"是字串的字面量,在字串字面量中 \ 也是轉義符,
比如 \n 會轉義成換行符。在生成的實際字串中是沒有 \ 這個字符的。
同樣的 \? 會轉義成 ? 。在生成的實際字串中也是沒有 \ 這個字符的。
要在生成的實際字串中出現 \ 字符。需要在字串字面量中寫成 \\
所以需要寫成new RegExp("(^|\\?|&)s=(.*)[&$]")
要注意,字串的字面量 與 實際字串的區別。
在正則測驗網站中可以,因為是直接獲取文本框中實際字串的值,不是js源代碼中定義的字串的字面量, \ 不會轉義。
另外,也可以用 /(^|\?|&)s=(.*)[&$]/ 正則運算式的字面量,直接創建正則運算式物件,不經過字串字面量,\ 也就不會被轉義了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/218984.html
標籤:JavaScript
上一篇:請問JQ怎么獲取
下一篇:如何寫一個點擊平滑滾動側邊導航欄
