正規表示式

2021-09-13 08:12:43 字數 2401 閱讀 9142

mdn文件

1. 斷言

斷言,就是指明某個字串前邊或者後邊,將會出現滿足某種規律的字串。

零寬斷言:一般的正規表示式匹配,都是有 寬度 的,如:w+。 會將 '。' 一同匹配到。如果像 '。' 這樣的內容只是一種判斷條件,即不想被正則匹配到,就要使用到 零寬斷言了。

(?=x)零寬度正先行斷言:僅當子表示式 x 在 此位置的右側匹配時才繼續匹配。例如,w+(?=d) 與後跟數字的單詞匹配,而不與該數字匹配。此構造不會回溯。

(?!x)零寬度負先行斷言:僅當子表示式 x 不在 此位置的右側匹配時才繼續匹配。例如,例如,w+(?!d) 與後不跟數字的單詞匹配,而不與該數字匹配 。

(?<=x)零寬度正後發斷言:僅當子表示式 x 在 此位置的左側匹配時才繼續匹配。例如,(?<=19)99 與跟在 19 後面的 99 的例項匹配。此構造不會回溯。

(?目前js只支援先行斷言,後發斷言還不支援。不過目前chrome支援了後發斷言。

2. 分組

分組的型別(四種):

捕獲型   - ()

非捕獲型  - (?:)

正向前瞻型 - (?=)

反向前瞻型 - (?!)

其中只有捕獲型分組會暫存匹配到的串。

乙個分組中可以寫多個表示式:(表示式1|表示式2|表示式3), 表示匹配其中任意乙個表示式。

分組可以通過將某些表示式組合成整體,這樣可以簡化表示式的書寫。例如將/testtesttest/寫為/(test)/

3. 捕獲與引用

1) 巢狀分組的捕獲: 規則是以左括號出現的順序進行捕獲

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

var str = "kid is a doubi"

reg.test( str ) // true

console.log(regexp.$1) // kid is a doubi

console.log(regexp.$2) // kid

console.log(regexp.$3) // a doubi

console.log(regexp.$4) // doubi

通過 $1 可以引用捕獲的字串

2) replace中捕獲的使用:

3)反向引用

正規表示式裡也能進行引用,這稱為反向引用:

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

1引用了第乙個被分組所捕獲的串,換言之,表示式是動態決定的。

注意,如果編號越界了,則會被當成普通的表示式:

var reg = /(w) is 6/;

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

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

3. 字元集合通常字元集合有由方括號括起來。

segmentfault文章

replace預設只替換第乙個匹配到的字串。

mdn文件regexp物件

regexpobject.exec(string)

exec() 方法用於檢索字串中的正規表示式的匹配,返回乙個陣列,其中存放匹配的結果。如果未找到匹配,則返回值為 null;

情況 1)regexp為非全域性正規表示式;

情況 2)regexp為全域性正規表示式,exec()可以像迭代器那樣,多次呼叫,獲得匹配值;

regexpobject.test(string)

如果字串 string 中含有與 regexpobject 匹配的文字,則返回 true,否則返回 false

w3 replace方法

mdn replace方法

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...