js正規表示式之

2021-08-02 18:30:43 字數 1660 閱讀 5420

今天搞了乙個東西,拿到乙個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 備選字符...