前端基礎 正則語法 元字元

2021-10-04 10:36:10 字數 4878 閱讀 8053

正規表示式中的字元:

元字元:一些具有特殊含義的特殊符號。

普通字元:包括所有大寫和小寫字母、所有數字、所有標點符號和一些其他符號。

正規表示式三步走

① 匹配符(查什麼)(等價符、字元簇、修飾符、轉義符)

② 限定符(查多少)

③ 定位符(從哪查)

限定符(量詞)用來指定正規表示式的乙個給定元件必須要出現多少次才能滿足匹配。有 * 或 + 或 ? 或 或 或 共6種。

*匹配前面的子表示式零次或多次。例如,zo* 能匹配 「z」 以及 「zoo」。* 等價於。

+匹配前面的子表示式一次或多次。例如,『zo+』 能匹配 「zo」 以及 「zoo」,但不能匹配 「z」。+ 等價於 。

?匹配前面的子表示式零次或一次。例如,「do(es)?」 可以匹配 「do」 、 「does」 中的 「does」 、 「doxy」 中的 「do」 。? 等價於 。

n 是乙個非負整數。匹配確定的 n 次。例如,『o』 不能匹配 「bob」 中的 『o』,但是能匹配 「food」 中的兩個 o。

n 是乙個非負整數。至少匹配n 次。例如,『o』 不能匹配 「bob」 中的 『o』,但能匹配 「foooood」 中的所有 o。『o』 等價於 『o+』。『o』 則等價於 『o*』。

m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,「o」 將匹配 「foooood」 中的前三個 o。『o』 等價於 『o?』。請注意在逗號和兩個數之間不能有空格。

var str =

'phpphp'

;var res = str.

match

(/p+/g);

//匹配所有的乙個p或多個連在一起的p

console.

log(res)

;//["p", "pp", "p"]

貪婪匹配與非貪婪匹配:

預設情況下,正規表示式執行貪婪匹配(盡可能取多的情況)

非貪婪匹配:相對於貪婪匹配來說的。設定方式:將?加在其他限定符之後。

var str =

'phpphp'

;var res = str.

match

(/p+?/g);

//+後面有? 執行非貪婪匹配(最少匹配)

console.

log(res)

;//["p", "p", "p", "p"]

非貪婪匹配使用場景舉例:

abc

匹配div2標籤

.匹配除換行符(\n、\r)之外的任何單個字元。要匹配包括 『\n』 在內的任何字元,請使用像"(.|\n)"的模式。

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

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

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

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

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

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

\n匹配乙個換行符。等價於 \x0a 和 \cj。

\r匹配乙個回車符。等價於 \x0d 和 \cm。

\t匹配乙個製表符。等價於 \x09 和 \ci。

常用的:  .  \d  \w

var str =

'php1js22'

;var res = str.

match

(/\d+/g);

//匹配所有的數字

console.

log(res)

;//["1", "22"]

定位符用來描述字串或單詞的邊界,^$分別指字串的開始與結束,\b描述單詞的前或後邊界,\b表示非單詞邊界。

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

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

\b匹配乙個單詞邊界,也就是指單詞和空格間的位置。例如, 『er\b』 可以匹配"never" 中的 『er』,但不能匹配 「verb」 中的 『er』。

\b匹配非單詞邊界。『er\b』 能匹配 「verb」 中的 『er』,但不能匹配 「never」 中的 『er』。

注意: 通常在表單資料驗證時,嚴格檢測字串格式,需要使用^$

var str =

'1234'

;var res = str.

match

(/^\d+$/);

//匹配整個數字字串(匹配id引數值)

console.

log(res)

;//["1234"]

<

/script>

方括號表示乙個範圍,也稱為字元簇,匹配滿足條件的乙個字元。

[xyz]

字元集合。匹配所包含的任意乙個字元。例如, [abc]可以匹配 「plain」 中的 『a』。

[^xyz]

負值字元集合。匹配未包含的任意字元。例如, [ ^abc] 可以匹配 「plain」 中的』p』、『l』、『i』、『n』。

[a-z]

字元範圍。匹配指定範圍內的任意字元。例如, [a-z] 可以匹配 『a』 到 『z』 範圍內的任意小寫字母字元。

[^a-z]

負值字元範圍。匹配任何不在指定範圍內的任意字元。例如,[ ^a-z]可以匹配任何不在 『a』 到 『z』 範圍內的任意字元。

x|y或的用法:匹配 x 或 y。例如,『z|food』 能匹配 「z」 或 「food」。』(z|f)ood』 則匹配 「zood」 或 「food」。

字元範圍 參考ascii碼表

示例:[0-9] 查詢任何從 0 至 9 的乙個數字。

[a-z] 查詢任何從小寫 a 到小寫 z 的字元。

[a-z] 查詢任何從大寫 a 到大寫 z 的字元。

[a-z] 查詢任何從大寫 a 到小寫 z 的字元。包括[ \ ]^_`等六個字元。

[a-za-z]查詢任何從大寫 a 到小寫 z 的字元,不包括[ \ ]^_`等六個字元。

var str =

'adcd1234abcd'

;var res = str.

match

(/[a-z]+/g);

//匹配所有小寫字母字串

console.

log(res)

;//["abcd"]

修飾符的用法,修飾符一定要寫到正規表示式末尾/之後,可以一次性使用多個修飾符。

i 執行對大小寫不敏感的匹配。實際上就是不區分大小寫的匹配(預設區分大小寫)

g 執行全域性匹配(查詢所有匹配而非在找到第乙個匹配後停止)。

m 執行多行匹配(^和$能匹配每行的開始與結束)。

/i用法示例:

var str =

'adcd1234abcd'

;var res = str.

match

(/[a-z]+/gi);

//匹配所有字母字串(忽略大小寫)

console.

log(res)

;//["adcd", "abcd"]

/m用法示例

var str =

'1234\r\n5678'

;var res = str.

match

(/^\d+$/gm);

//匹配整個數字字串

console.

log(res)

;//["1234", "5678"]

\

將下乙個字元標記為乙個特殊字元、或乙個原義字元、或乙個 向後引用、或乙個八進位制轉義符。例如,『n』 匹配字元 「n」。』\n』 匹配乙個換行符。序列 '\ \ 』 匹配 "\ " 而 「\ (」 則匹配 「(」。

如果匹配的字串在正則中有特殊含義的都必須加轉義字元。如$.*?+|^{}()

但是不要亂加轉義。

var str =

'php.php'

;//目標字串中包含普通字元.

var res = str.

match

(/p\.p/g);

//匹配普通字元. 需要轉義

console.

log(res)

;//["p.p"]

匹配名稱

;//目標字串中包含普通字元.

//匹配jpg字尾的名稱

console.

log(res)

;//["123.jpg"]練習題:

匹配字串開始和結束的數字 預期結果 123 789; ^ \d | $

var str =

'123abc456def789'

;var res = str.

match

(/(^\d+)|(\d+$)/g);

//匹配開始或結束的數字

console.

log(res)

;//["123","789"]

正則元字元

匹配除換行符以外的任意字元 0123456789 是字元集合,表示匹配方括號中所包含的任意乙個字元 good 匹配good中任意乙個字元 a z 匹配任意小寫字母 a z 匹配任意大寫字母 0 9 匹配任意數字 0 9a za z 匹配任意的數字和字母 0 9a za z 匹配任意的數字,字母以及下...

正則元字元

匹配除換行符以外的任意字元 w 匹配字母或數字或下劃線 s 匹配任意的空白符 d 匹配數字 b 匹配單詞的開始或結束 匹配行的開始 匹配行的結束 重複零次或更多次 重複一次或更多次 重複零次或一次 重複n次 重複n次或更多次 重複n到m次 w 匹配任意不是字母,數字,下劃線,漢字的字元 s 匹配任意...

正則 元字元

正則用來判斷乙個字串是否符合這個規則,還可以把符合規則的內容捕獲到 test 方法 用來判斷乙個字串是否符合這個規則 exec 方法 把符合規則的內容捕獲到 元字元 具有特殊意義的字元 轉義字元,可以把特殊意義的字元轉成普通字元的意思,或普通字元轉特殊意義 匹配所有字元 除了換行符 以某個字元開頭 ...