js正則 斷言

2021-10-09 13:44:26 字數 3552 閱讀 3248

字面量和實列兩種建立方法

var reg =

/123123123aaa.*/g

// 或

var val =

'匹配'

var reg =

newregexp

('123123123aaa.*'

,'g'

);

修飾符貪婪與惰性模式
var val =

'12345678asd'

;console.

log(

/.*/

.exec

(a)[0]

)// "123456789"

console.

log(

/.*?/

.exec

(a)[0]

)// ""

console.

log(

/.+/

.exec

(a)[0]

)// "123456789"

console.

log(

/.+?/

.exec

(a)[0]

)// "1"

console.

log(

/\d/

.exec

(a)[0]

)// "123456789"

console.

log(

/\d?/

.exec

(a)[0]

)// "1"

如果要匹配具有特殊意義的特殊符號或者使用某些元字元,需要使用\來轉義區分

字元類

比如要查詢數字,我們可以用\d,也可以用字元類[0-9]一樣生效在字元類中,-代表著取值選擇乙個取值範圍範圍,如果想要匹配字串-,要加轉義符[\-]

[0-15]匹配的是0-15,並不是0、1、2、3、4...15

[aaaassddasdasddsda][asd]匹配的都是asd

字元類中,^代表著非,是指匹配非[^內容]中的內容

var reg =

/a[dp]c/

// 匹配adc或apc

var reg =

/[a-za-z0-

9_]/

// 匹配數字字母下劃線

var reg =/[

^a-za-z0-

9_]/

// 匹配非數字字母下劃線

()可以進行對內容的範圍選擇,捕獲等

(123|132|321|312)表示不論是123、132、321、312都可以匹配

(123)?這時的?是對123這一組資料應用的,代表著出現一次123或者不出現123

1.在exec中使用可以獲得()中的內容

舉個栗子:

var a =

"123456789"

var val =

/34567/

.exec

(a)console.

log(val[0]

)// "34567"

console.

log(val[1]

)// undefined

var val2 =

/34(56)7/

.exec

(a)console.

log(v2[0]

)// "34567"

console.

log(v2[1]

)// "56"

2. 當正規表示式執行了test()方法或者exec(),且 該正規表示式中包含分組,則分組中與字串匹配的內容,會被儲存下來。

提取正規表示式中的內容最多提取9個()中的內容

舉個栗子:

var a =

"123456789"/(

2)(3

)((4

)(5)

)6789/.

test

(a)console.

log(regexp.$1

)// "2"

console.

log(regexp.$2

)// "3"

console.

log(regexp.$3

)// "45"

console.

log(regexp.$4

)// "4"

console.

log(regexp.$5

)// "5"

console.

log(regexp.$6

)// "" // 因為沒有第六個括號,所以是空

3. 在replace中使用()可以通過$n來取得括號中的內容

舉…:

var a =

"123456789"

a.replace

(/2345(67)8/

,'這是替換的文字$1這是替換的文字'

)// "1這是替換的文字67這是替換的文字"

replace補充,其他字串匹配方式:

斷言可以幫助我們查詢某些內容時,對內容前和內容後的資訊作為判斷(但並不包括這些內容)(把內容前或後的資訊作為判斷依據但結果不包括這些內容,所以也被稱為零寬斷言

比如我們要在字串我是小明我是小王我是小綠我是小豬我啥也不是把小明前的我是改為我不是,就可以使用零寬正先行斷言(?=x)(x代表需要被匹配但不被包括的內容)

var str =

"我是小明我是小王我是小綠我是小豬我啥也不是"

var reg =

/我是(?=小明)/

console.

log(str.

replace

(reg,

'我不是'))

// "我不是小明我是小王我是小綠我是小豬我啥也不是"

可以看到,(?=小明)中的小明沒有被替換掉,但是起到了匹配的作用,這就是斷言的用處

斷言的寫法

需要注意

js正則高階用法 分組和斷言

原文連線 對於要重複單個字元,非常簡單,直接在字元後加上限定符即可,例如 a 表示匹配1個或乙個以上的a,a?表示匹配0個或1個a,這些限定符如下所示 x x 一次或一次也沒有 x x 零次或多次 x x 一次或多次 x x 恰好 n 次 x x 至少 n 次 x x 至少 n 次,但是不超過 m ...

js正規表示式零寬斷言

我們開發 需要對一些前台傳過來的字串進行檢驗,比如檢驗使用者輸入的使用者名稱是否合法,號是否合法,使用者 的郵箱是否合法等。我們可以自己寫個函式進行檢驗。但是過於繁瑣,這時候我們可以用正規表示式進行檢驗。能夠準確 的檢驗出使用者輸入的郵箱是否合法,如果不合法反饋給使用者。1 字面量方式 var re...

正則指引 斷言

正規表示式中的大多數結構匹配的文字會 出現在匹配的結果中,但是有時候不但關心目標文字的匹配,還要判斷目標文字左右兩側的文字是否符合要求,這種要求的正則裡叫做斷言。常見的斷言有三類 單詞邊界 行的起始 結束的位置 環視。單詞邊界 正則記著 b,它匹配 單詞邊界 的位置。使用情況 bword b bwo...