JavaScript高階 正規表示式

2021-08-04 21:51:07 字數 2627 閱讀 8282

前言

這篇部落格是我對正規表示式一些基礎知識的整理。

基礎部分

1.1 什麼是正規表示式

是一種特殊的字串模式

作用是匹配字串

如同用模具做產品,正規表示式就是模具,具體的字串就是產品

定義一種規則去匹配復合規則的字串

1.2 元字元介紹

「^」 :  ^會匹配行或者字串的開頭,有時會匹配整個文件的起始位置

「$」:  $匹配字串的結尾。

「\b」:  單詞的邊界,如在字串「

i am a boy

」,單獨匹配單詞「

boy」需要「

\bboy\b」,

\b不會匹配

boy兩邊的字元,但會識別

boy兩邊是否為字元的邊界。

「\d」:  匹配數字

「\w」:  匹配數字,字母和下劃線

「\s」:   匹配空格

「.」:  匹配除了換行符以外的所有字元,相當於」\w」的加強版,」\w」不能匹配空格

「[abc]」:  匹配包含括號內元素的字元,只匹配括號內存在的字元

1.3 幾種反義

「\w」: 匹配任意不是字母,數字,下劃線的字元

「\s」:  匹配任意不是空白符的字元

「\d」:  匹配任意非數字的字元

「\b」:  匹配不是單詞開頭或結束的位置

「[^abc]」:  匹配了除了

abc以外的任意字元

1.4 量詞

貪婪:如

「*」字元,貪婪量詞會首先匹配整乙個字串,嘗試匹配時,它會盡可能地匹配每乙個字元,如果失敗則回退(回溯)乙個字元,直到找到可以匹配的字元或者沒有字元可以回退。相比下面量詞,它的消耗是最大的。

懶惰:如

「?」它從目標的起始位置開始嘗試匹配,每次檢查乙個字元,並尋找它要匹配的內容,它會一直匹配到字串結尾處。 「*

aaaab

」匹配字串中所有的

a,正則:「a*」

「+」:

重複一次或更多

「?」:重複零次或一次 「

」:重複

n次,例如從「

aaaab

」中匹配

a並重複

2次,正則:「a」

「」:重複最少

n次最多m次

「」:重複

n0123-4567890

,格式為

0***-*******

, 正則:「

^0\d-\d$

1.5  懶惰限定符

「*

?」:重複任意次,但盡可能少,例如「

aaaaab

」正則:「

a*?b

」,原本可以取到全部的字元

a,但因為盡可能少的匹配,所以最後得到「ab」

「+?」:重複一次以上,但盡可能少

「??」重複零次或一次,但盡可能少 「

」:重複n次到

m次,但盡可能少

「」:重複

n次以上,但盡可能少

高階部分:

2.1 捕獲分組

捕獲陣列:如(

\d),可以對捕獲分組進行向後引用,如(\d)

\d\1

這裡的「

\1」就是對(「

\d」)的後向引用。

下面為捕獲分組常用的方法:

「(exp

)」:匹配

exp,並捕獲文字到自動命名的組裡

「(?exp

)」:匹配

exp,捕獲文字到名為

arrayname

的組裡「(?:exp

)」:匹配

exp,不捕獲文字,也不建立組

2.2 零寬斷言

「(?=exp

)」:也叫零寬正**先行斷言,匹配

exp前面的文字,例如「

how are you

」,正則:「(?

.+(?=ing)

)」,這裡取

ing前面所有的字元,並定義乙個捕獲分組,該分組名為

txt,分組內的值是

ing前面的字元。

「(?<=exp

)」: 也叫零寬正回顧後發斷言,匹配

exp後面的文字:例如「

how are you

」,正則:「(?

(?<=how).+

)」,這裡取

how後面的所有字元,並定義乙個捕獲分組為

txt「(?!exp)」

2.3 負向零寬斷言

(?!exp):後面跟不是

exp的文字,例如「

aaa123

」正則:「

aaa(?!

[1-9]

)」,匹配

aaa後非數字的結果

(?!):前面不是

exp的文字

Python高階正則

1 importre2 3 p re.compile 0 9 45 m p.match 13435asadb 67print m.group 一 上面的第二行和第三行也可以合併成一行來寫 m p.match 0 9 13435asadb 效果是一樣的,區別在於第一種方式是提前對要匹配的格式進行編譯,...

js高階正則解析

1.var reg var reg 前者代表任意乙個字元而後者代表這個字串中得有乙個.2.的使用 如果單獨的乙個字元後面帶?var reg d?n?代表乙個或0個這個字元的出現 如果是量詞 和 後面帶?取消正則的貪婪性 在捕獲階段 var reg d var st ahfuoi6565232 con...

高階正則用法 預查

工欲善其事必先利其器,正規表示式無疑是乙個非常強大的工具,從txt,excel,word還有眾多編輯器,還有各種開發語言都有它的蹤影.下面就說下正規表示式較為高階的預查用法 包含4個關鍵字元順序 只能同時出現乙個 預查校驗的標誌 否定 肯定 表示捕獲分組,會把每個分組裡的匹配的值儲存起來,使用 n ...