天天看點

一入js 深似海,從此 正則 是路人(進階——反向引用, 預搜尋)說明

說明

先把去年文章搬過來,原賬号密碼忘了,雖然就寫了一篇

  1. 擷取兩特定符号之間文字

‘adc+1232-def+3-g+5-’.match(/([^±]+)(?=-)/g);//擷取±之間的内容 [“1232”, “3”, “5”]

  1. 擷取一個特定符号之間文字

(/!.*!/).exec(“test!user_mobile_default!b789cba9-80a6-4f89-b74b-dc7cda3ba5be”);

結果 :["!user_mobile_default!"]

(/!(.*)!/).exec(“test!user_mobile_default!b789cba9-80a6-4f89-b74b-dc7cda3ba5be”);

結果 :["!user_mobile_default!", “user_mobile_default”]

作為一個程式員,感覺自己是文盲。。。。。。

-------------------------------なんで,なんで--------手動分割一下--------------------------------------------------

(?=xxxxxx)

格式:"(?=xxxxx)",在被比對的字元串中,它對所處的 “縫隙” 或者 “兩頭” 附加的條件是:所在縫隙的右側,必須能夠比對上 xxxxx 這部分的表達式。因為它隻是在此作為這個縫隙上附加的條件,是以它并不影響後邊的表達式去真正比對這個縫隙之後的字元。這就類似 “/b”,本身不比對任何字元。"/b" 隻是将所在縫隙之前、之後的字元取來進行了一下判斷,不會影響後邊的表達式來真正的比對。

是以 1 裡面 (?=-) 意思是 ([^±]+) 的右側必須是 ‘-’,即比對所有不含±号的字元串(分組),并且最右字元為-号

()的作用:

(1). 在被修飾比對次數的時候,括号中的表達式可以作為整體被修飾

(2). 取比對結果的時候,括号中的表達式比對到的内容可以被單獨得到

是以 2 裡面()裡的内容是 “user_mobile_default”,結果一般預設是數組中第二個

參考:http://www.cnblogs.com/wzhiq896/p/6012212.html

繼續閱讀