小白正規表示式入門學習:正規表示式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]
字元集合,匹配所包含的任意乙個字元
匹配內部的內容,即x
y
[^xy]
字元集合,匹配所包含的任意乙個字元
匹配內部的內容,即不是x
y
的任意乙個字元
[a-z]
字元集合,匹配所包含的任意乙個字元
匹配內部的內容,即a-z
之間任意乙個字元
[^a-z]
負值字元範圍。匹配任何不在指定範圍內的任意字元
匹配內部的內容,即不是a-z
之間任意乙個字元
n
是乙個非負整數。匹配確定的n
次
匹配連續出現n
次的字元
n
是乙個非負整數。至少匹配n
次
匹配至少出現n
次的字元
m
和n
均為非負整數,其中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 取盡可能大,...