js正則匹配字串中某段內容

2021-10-07 04:42:13 字數 1906 閱讀 2197

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...