JS正規表示式的分組

2021-08-28 22:57:18 字數 2261 閱讀 9581

什麼是分組

通俗來說,我理解的分組就是在正規表示式中用()包起來的內容代表了乙個分組,像這樣的:

var reg = /(\d)/

reg.test('12'); //true

這裡reg中的(/d)就表示乙個分組,匹配兩位數字

分組內容的的形式

乙個分組中可以像上面這樣有乙個具體的表示式,這樣可以優雅地表達乙個重複的字串

/hahaha/

/(ha)/

這兩個表示式是等效的,但有了分組之後可以更急簡潔。

體格分組中還可以有多個候選表示式,例如

var reg = /i come from (hunan|hubei|zhejiang)/;

reg.test('i come from hunan'); //true

reg.test('i come from hubei'); //true

也就是說在這個分組中,通過|隔開的幾個候選表示式是並列的關係,所以可以把這個|理解為或的意思

分組的分類

分組有四種型別

分組的應用

分組在正則中還算使用的比較廣泛的,我們常用的是捕獲型分組

var reg = /(\d)-(\d)-(\d)/;

var datestr = '2018-04-18';

reg.test(datestr); //true

regexp.$1

//2018

regexp.$2

//04

regexp.$3

//18

結合replace方法做字串自定義替換
var datestr = '2018/04/18';

var reg = /(\d)\/(\d)\/(\d)/;

datestr = datestr.replace(reg, '$1-$2-$3') //"2018-04-18"

不過這裡需要注意的是/是需要用\轉義的

反向引用

var reg = /(\w) is \1/

reg.test('kid is kid') // true

reg.test('dik is dik') // true

reg.test('kid is dik') // false

reg.test('dik is kid') // false

var reg = /(\w) is \6/;

reg.test( 'kid is kid' ); //

false

reg.test( 'kid is \6' ); //

true

非捕獲型分組
var reg = /(?:\d)-(\d)-(\d)/

var date = '2012-12-21'

reg.test(date)

regexp.$1

// 12

regexp.$2

// 21

正向與反向前瞻型分組
var reg = /kid is a (?=doubi)/

reg.test('kid

is a doubi') // true

reg.test('kid

is a shabi') // false

var reg = /kid is a (?!doubi)/

reg.test('kid

is a doubi') // false

reg.test('kid

is a shabi') // true

既然前瞻型分組和非捕獲型分組都不會捕獲,那他們有什麼區別呢?先看例子:

var

reg, str = "kid is a doubi";

reg = /(kid is a (?:doubi))/

reg.test(str)

regexp.$1

// kid is a doubi

reg = /(kid is a (?=doubi))/

reg.test(str)

regexp.$1

// kis is a

也就是說非捕獲型分組匹配到的字串任然會被外層分組匹配到,而前瞻型不會,所以如果你希望在外層分組中不匹配裡面分組的值的話就可以使用前瞻型分組了。

js正規表示式分組捕獲

const reg reg.test 比如去掉 aaa 中的中括號 這裡只是舉個例,可以這樣來處理更複雜的模板字串 const reg a za z let str aaa while reg.test str console.log str str 這裡的 1就是 1 const reg a z ...

JS正規表示式的分組匹配

什麼是分組 通俗來說,我理解的分組就是在正規表示式中用 包起來的內容代表了乙個分組,像這樣的 var reg d reg.test 12 true 這裡reg中的 d 就表示乙個分組,匹配兩位數字 分組內容的的形式 乙個分組中可以像上面這樣有乙個具體的表示式,這樣可以優雅地表達乙個重複的字串 hah...

正規表示式 分組

正規表示式對於單個字元的重複,非常方便。比如 d 表示1個或多個數字,表示重複0次或多次 重複1次或多次 重複0次或1次 重複n次 重複n次或多次 重複n次到m次 指定的字元後加特定的限定符,即可實現單字元的重複,那麼,對於一組字串的重複,正規表示式該如何操作?用小括號來指定子表示式 或稱分組 對指...