1.如何使用正則
var expression =
/ pattern /flags;
其中模式(pattern)部分可以是任何簡單或複雜的正規表示式,每個正規表示式都帶有乙個或多個標籤(flags)用以標明正規表示式的行為
2.匹配字串中的某段內容
我們要匹配的文字
var strmatch =
`-rw-r--r--. 1 root root 114769 apr 26 15:39 cn_cm_shanghai_24709063_m.mtl
-rw-r--r--. 1 root root 2879642 apr 26 15:39 cn_cm_shanghai_2470190623_q.obj`
;
(1) 擷取字串中以cn_開頭.mtl結尾的部分(包含開頭和結尾)
var matchreg =
/cn_.*?\.mtl/gi
;console.
log(strmatch.
match
(matchreg));
//輸出 cn_cm_shanghai_24709063_m.mtl
符號表示.
除換行符\n之外的任意字元
*匹配前面的子表示式0次或多次
?匹配前面的子表示式零次或一次,或指明乙個非貪婪限定符
\.匹配.
g全域性匹配
i不區分大小寫
(2) 擷取字串以cn_開頭,以.mtl之前的內容結尾
var matchreg =
/cn_.*?(?=.mtl)/gi
;console.
log(strmatch.
match
(matchreg));
//輸出cn_cm_shanghai_24709063_m
(3) 擷取字串cn_和.mtl之間的內容(不包含cn_和.mtl)
var matchreg =
/(?<=cn_).*?(?=.mtl)/
;console.
log(strmatch.
match
(matchreg));
//輸出 cm_shanghai_24709063_m
(4) 擷取cn_之後(不包括cn_), .mtl之前的(包括.mtl)的字串方法
var matchreg =
/(?<=cn_).*?\.mtl/
;console.
log(strmatch.
match
(matchreg));
//輸出 cm_shanghai_24709063_m.mtl
(5) 擷取cn_開頭,.mtl或者.obj(包含)結尾的字串
var matchreg =
/cn_.*?(.mtl|.obj)/
;console.
log(strmatch.
match
(matchreg));
//輸出 cn_cm_shanghai_24709063_m.mtl和cn_cm_shanghai_2470190623_q.obj
(6) 輸出以cn_開頭,以.mtl或者.obj(不包含)結尾之前的內容
var matchreg =
/cn_.*?(?=(.mtl|.obj))/
;console.
log(strmatch.
match
(matchreg));
//輸出 cn_cm_shanghai_24709063_m和cn_cm_shanghai_2470190623_q
字串正則匹配
匹配1個或多個 匹配乙個 abc a b false abc a?c true abc a true ab a false 重點就是處理掉 如果匹配的時候 後面沒有字元了那返回真,如果有的話,那麼很簡單,從str中從後往前拿pattern 中 從 開始到pattern末尾個字元個數的字元,繼續遞迴匹...
正則匹配字串無匹配不到 字串匹配演算法
我們先說下定義,比如說我們要在a字串中查詢字串b,那麼a就是主串,b就是模式串 我們把主串的長度記為n,把模式串的長度記為m,n m bf brute force 中文名 暴力匹配演算法,樸素匹配演算法 簡單的說bf的演算法就是在主串中查詢起始位置是0,1,2,n m個且長度為m的n m 1個子串,...
JS 正則擷取文字匹配的字串
特別注意,match的物件要為string型別 1 js擷取兩個字串之間的內容 varstr aaabbbcccdddeeefff str str.match aaa s fff 1 alert str 結果bbbcccdddeee2 js擷取某個字串前面的內容 varstr aaabbbcccdd...