Javascript之正規表示式的學習筆記

2021-09-11 21:10:30 字數 4053 閱讀 7451

小白正規表示式入門學習:正規表示式30分鐘入門教程

正規表示式regular expression是一種文字模式。它描述了一種字串匹配的模式pattern,可以用來檢查乙個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。 我們將正規表示式分為幾個部分記下筆記,便於理解與使用。

我們在 mdn-regular_expression 上得知,正規表示式會有一些特殊字元,也叫作元字元。如下表示:

字元含義

英語記憶或者個人記憶方法

匹配字元

\b匹配乙個單詞邊界,也就是指單詞和空格間的位置。乙個匹配的詞的邊界的內容的長度是0。(不要和[\b]混淆了)

blank

\b匹配非單詞邊界。乙個字串的開始和結尾都被認為不是「字」字元,或者空字串

blank,b與b相反

\d匹配乙個數字字元。等價於 [0-9]

digit

\d匹配乙個非數字字元。等價於 [^0-9]

digit,d與d相反

\s匹配任何空白字元,包括空格、製表符、換頁符等等。等價於 [ \f\n\r\t\v]。

space

\s匹配任何非空白字元。等價於 [^ \f\n\r\t\v]。

space, s與s相反

\w匹配字母、數字、下劃線。等價於'[a-za-z0-9_]'

word

\w匹配非字母、數字、下劃線。等價於 '[^a-za-z0-9_]'

word,w與w相反

匹配特殊字元

\t匹配乙個製表符 (\x09)。

table

\n匹配乙個換行符 (\x09a)。

new line

\f匹配乙個換頁符 (\x09c)。

page break#form feed

\v匹配乙個垂直製表符。等價於 \x0b 和 \ck。

vertical table

\r匹配乙個回車符 (\x09d)。

return

\將下乙個字元標記為乙個特殊字元、或乙個原義字元、或乙個 向後引用、或乙個八進位制轉義符。

反斜槓也可以將其後的特殊字元,轉義為字面量,當需要使用\時也需要將其轉義

x | y

匹配 x 或 y

或運算^

匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,^ 也匹配 '\n' 或 '\r' 之後的位置開始$

匹配輸入字串的結束位置。如果設定了regexp 物件的 multiline 屬性,$ 也匹配 '\n' 或 '\r' 之前的位置

結束匹配內容次數

*匹配前面的子表示式零次或多次`+

匹配前面的子表示式一次或多次

?匹配前面的子表示式零次或一次

匹配分組

(pattern)

匹配pattern並獲取這一匹配。所獲取的匹配可以從產生的matches集合得到,js使用$0…$9屬性獲取匹配結果

匹配括號內部的正規表示式結果

[xy]

字元集合,匹配所包含的任意乙個字元

匹配內部的內容,即xy

[^xy]

字元集合,匹配所包含的任意乙個字元

匹配內部的內容,即不是xy的任意乙個字元

[a-z]

字元集合,匹配所包含的任意乙個字元

匹配內部的內容,即a-z之間任意乙個字元

[^a-z]

負值字元範圍。匹配任何不在指定範圍內的任意字元

匹配內部的內容,即不是a-z之間任意乙個字元

n是乙個非負整數。匹配確定的n

匹配連續出現n次的字元

n是乙個非負整數。至少匹配n

匹配至少出現n次的字元

mn均為非負整數,其中n<=m。最少匹配n次且最多匹配m

匹配出現[n, m]次字元

下面我們講上述元字元乙個乙個的測試。

不過,在測試之前,我們先了解兩個正規表示式的方法,test() 和 exec()。

元字元\b\b

從上面結果得知,b匹配的是單詞的邊界,b匹配的是非單詞的邊界

元字元\d\d

元字元\s\s

元字元\w\w

引數列表

含義英語記憶或者個人記憶方法

i忽略大小寫

ignorecase

g全文查詢出現的所有匹配字元

global

m多行查詢

multiline

y執行「粘性」搜尋,匹配從目標字串的當前位置開始,可以使用y標誌

sticky

當然,上面這幾種匹配規則可以結合使用,例如/ig或者/gi都是全文查詢、忽略大小寫

方法含義

匹配返回值

未匹配返回值

test()

測試是否匹配的regexp方法

true

false

exec()

執行查詢匹配的regexp方法

陣列null

match(pattern)

執行查詢匹配的string方法

陣列null

search(pattern)

測試匹配的string方法

返回匹配到的位置索引

-1replace(pattern, obj || callback)

執行查詢匹配的string方法,並且使用替換字串替換掉匹配到的子字串

乙個新的字串

null

split

乙個使用正規表示式或者乙個固定字串分隔乙個字串,並將分隔後的子字串儲存到陣列中的string方法

返回乙個陣列

null

下面我們講上述方法乙個乙個的測試

param:str

result:

匹配成功:如果正規表示式與指定的字串匹配 ,返回true

匹配失敗:false

param:str

result:

匹配成功:exec() 方法返回乙個陣列,並更新正規表示式物件的屬性。返回的陣列將完全匹配成功的文字作為第一項,將正則括號裡匹配成功的作為陣列填充到後面。

匹配失敗:如果匹配失敗,exec() 方法返回 null。

物件屬性/索引

描述result

[0]匹配的全部字串

[1], ...[n ]

括號中的分組捕獲

index

匹配到的字元位於原始字串的基於0的索引值

input

原始字串

regexp

lastindex

下一次匹配開始的位置

ignorecase

是否使用了 "i" 標記使正則匹配忽略大小寫

global

是否使用了 "g" 標記來進行全域性的匹配 true

multiline

是否使用了 "m" 標記使正則工作在多行模式(也就是,^ 和 $ 可以匹配字串中每一行的開始和結束(行是由 \n 或 \r 分割的),而不只是整個輸入字串的最開始和最末尾處。)

source

正則匹配的字串

back to test char

未完待續ing

Javascript之正規表示式基礎

regexp 物件表示正規表示式,它是對字串執行模式匹配的強大工具。1 regexp 物件的建立 直接量語法 pattern attributes 建立 regexp 物件的語法 new regexp pattern,attributes 注 引數 pattern 是乙個字串,指定了正規表示式的模式...

JavaScript高階之正規表示式

在js中使用正規表示式的目的是使用某種規則匹配字串或子字串 與建立陣列相同,建立regexp物件有兩種方法,一種是字面量,一種是使用建構函式。使用字面量 var reg d g 用兩個斜槓包裹匹配規則 使用建構函式 var reg new regexp d g 第乙個引數是匹配規則,同時需要對 進行...

JavaScript學習之正規表示式

詳情可看mdn文件 幾個值得記憶的點 任意字元,除了 r n u2028 u2029的所有單個字元,大於 u0xffff的兩個字元也不行 s s 與 所有單個字元,包括換行符 o bo 不存在這樣的單詞進行匹配 取盡可能大,則是取盡可能小,最小為1 取盡可能大,則是取盡可能小,最小為0 取盡可能大,...