今天搞了乙個東西,拿到乙個url後,想在url的search後面加個引數,當然這個url是任意的
var url = 『 adtag =『share』,pre = url.lastindexof('?')>-1 ? '&': '?';
if(url.lastindexof('#')>-1)else
後面發現,總是加不成功,如以下例子
''.replace(/(#)(?=[^#]*)$/, 'zzzzz#')
》""後面嘗試把$放在(?=)裡面,居然成功了
''.replace(/(#)(?=[^#]*$)/, '&adtag=share#')""
沒有$的情況也成功''.replace(/(#)(?=[^#]*)/, '&adtag=share#')""
再看下面的內容
"fdjka ljfdl stop fjdsla fdj".match(/((?!\bstop\b).)+/); 返回 ["fdjka ljfdl ", " "]
"fdjka ljfdl stop fjdslafdj".match(/((?!\bstop\b).)+/); 返回 ["fdjka ljfdl ", " "]
"fdjka ljfdl stop fjdslafdj".match(/((?!\bstop\b).)+/g); 返回 ["fdjka ljfdl ", "top fjdslafdj"]
"fdjka ljfdl stop fjdslafdj".match(/(.)+/); 返回 ["fdjka ljfdl stop fjdslafdj", "j"]
"aaa ffffff 999999999".match(/(\w)((?=\1\1\1)(\1))+/g); 返回 ["ffff", "9999999"]
"fdjka ljfdl stop fjdslafdj".match(/(.(?!\bstop\b))+/g); 返回 ["fdjka ljfdl", "stop fjdslafdj"]
看了上面後,再參考 所說,發現(?=) (?!)都只是向右匹配
比如 (?!\bstop\b).)是指 .匹配的字元,其左邊第乙個字元開始向右,不包括第乙個,(向右是可以穿過自己的哦),不匹配\bstop\b,這樣,
"fdjka ljfdl stop fjdslafdj".match(/((?!\bstop\b).)+/);返回["fdjka ljfdl ", " "] 的結果便可以解釋得通,到stop的s時,s前面第乙個字元向右可以找到"stop "這樣的字串,與\bstop\b相符(注意 " stop"與/\bstop\b/不是全匹配哦,"stop"與/\bstop\b/才是全匹配上),所以到s便不合適了;重新從s後面的t開始找到 "top fjdslafdj"又是相符的,所以"fdjka ljfdl stop fjdslafdj".match(/((?!\bstop\b).)+/g);返回["fdjka ljfdl ", "top fjdslafdj"]的結果也可理解。
對於/(.(?!\bstop\b))+/是指.號找到字元時,右邊的字串(包括右邊的第乙個)不與\bstop\b匹配, 到第二個空格時,右邊可以找到stop與\bstop\b 匹配,所以第二個空格不符合要求,上面最後乙個表示式"fdjka ljfdl stop fjdslafdj".match(/(.(?!\bstop\b))+/g);["fdjka ljfdl", "stop fjdslafdj"]便可以理解了。
JS 之正規表示式
字元含意 做為轉意,即通常在 後面的字元不按原來意 釋,如 b 匹配字元 b 當b前面加了反斜桿後 b 轉意為匹配乙個單詞的邊界。或 對正規表示式功能字元的還原,如 匹配它前面元字元0次或多次,a 將匹配a,aa,aaa,加了 後,a 將只匹配 a 匹配乙個輸入或一行的開頭,a 匹配 an a 而不...
JS 之正規表示式
字元含意 做為轉意,即通常在 後面的字元不按原來意 釋,如 b 匹配字元 b 當b前面加了反斜桿後 b 轉意為匹配乙個單詞的邊界。或 對正規表示式功能字元的還原,如 匹配它前面元字元0次或多次,a 將匹配a,aa,aaa,加了 後,a 將只匹配 a 匹配乙個輸入或一行的開頭,a 匹配 an a 而不...
js之正規表示式
在大部分使用者輸入資料模糊匹配時,頁面餘姚判斷使用者的輸入是否符合規範,這是利用正規表示式就可以實現判斷,即正規表示式是指定的判定標準。2.字符集 規定字串中某個字元備選字元列表 0123456789 0 9 如果備選字元是連續的,可以用 省略中間的字元 1 每個字符集只能匹配乙個字元 2 備選字符...