Javascript之正規表示式基礎

2021-06-10 08:28:20 字數 3717 閱讀 1275

regexp 物件表示正規表示式,它是對字串執行模式匹配的強大工具。

1、regexp 物件的建立

直接量語法:

/pattern/attributes

建立 regexp 物件的語法:

new regexp(pattern, attributes);

注:引數 pattern 是乙個字串,指定了正規表示式的模式或其他正規表示式。

引數 attributes 是乙個可選的字串,包含屬性 "g"、"i" 和 "m",分別用於指定全域性匹配、區分大小寫的匹配和多行匹配。ecmascript 標準化之前,不支援 m 屬性。如果 pattern 是正規表示式,而不是字串,則必須省略該引數。

返回值:

乙個新的 regexp 物件,具有指定的模式和標誌。如果引數 pattern 是正規表示式而不是字串,那麼 regexp() 建構函式將用與指定的 regexp 相同的模式和標誌建立乙個新的 regexp 物件。

如果不用 new 運算子,而將 regexp() 作為函式呼叫,那麼它的行為與用 new 運算子呼叫時一樣,只是當 pattern 是正規表示式時,它只返回 pattern,而不再建立乙個新的 regexp 物件。

丟擲:syntaxerror - 如果 pattern 不是合法的正規表示式,或 attributes 含有 "g"、"i" 和 "m" 之外的字元,丟擲該異常。

typeerror - 如果 pattern 是 regexp 物件,但沒有省略 attributes 引數,丟擲該異常。

2、修飾符

i    執行對大小寫不敏感的匹配。

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

m    執行多行匹配。

以i為例:

var reg = new regexp("regexp","i");

或:var reg = /regexp/i;

3、方括號

方括號用於查詢某個範圍內的字元:

[abc]                  查詢方括號之間的任何字元。//var patt1=/[a-h]/g;匹配所有a到h的字元

[^abc]               查詢任何不在方括號之間的字元。

[0-9]                  查詢任何從 0 至 9 的數字。

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

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

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

[adgk]                 查詢給定集合內的任何字元。

[^adgk]                查詢給定集合外的任何字元。

[red|blue|green]       查詢任何指定的選項。

4、元字元

元字元(metacharacter)是擁有特殊含義的字元:

.         查詢單個字元,除了換行和行結束符。

\w        查詢單詞字元。

\w        查詢非單詞字元。

\d        查詢數字。

\d        查詢非數字字元。

\s        查詢空白字元。

\s        查詢非空白字元。

\b        查詢位於單詞的開頭或結尾的匹配。

\b        查詢不處在單詞的開頭或結尾的匹配。

\0        查詢 nul 字元。

\n        查詢換行符。

\f        查詢換頁符。

\r        查詢回車符。

\t        查詢製表符。

\v        查詢垂直製表符。

\***      查詢以八進位制數 *** 規定的字元。

\xdd      查詢以十六進製制數 dd 規定的字元。

\u***x    查詢以十六進製制數 ***x 規定的 unicode 字元。

5、量詞

n+        匹配任何包含至少乙個 n 的字串。

n*        匹配任何包含零個或多個 n 的字串。

n?        匹配任何包含零個或乙個 n 的字串。

n      匹配包含 x 個 n 的序列的字串。

n    匹配包含 x 或 y 個 n 的序列的字串。

n     匹配包含至少 x 個 n 的序列的字串。

n$        匹配任何結尾為 n 的字串。

^n        匹配任何開頭為 n 的字串。

?=n       匹配任何其後緊接指定字串 n 的字串。

?!n       匹配任何其後沒有緊接指定字串 n 的字串。

6、regexp 物件屬性

global        regexp 物件是否具有標誌 g。

ignorecase    regexp 物件是否具有標誌 i。

lastindex     乙個整數,標示開始下一次匹配的字元位置。

multiline     regexp 物件是否具有標誌 m。

source        正規表示式的源文字。

7、compile() 方法用於在指令碼執行過程中編譯正規表示式。

regexpobject.compile(regexp,modifier)

regexp 正規表示式。

modifier 規定匹配的型別。"g" 用於全域性匹配,"i" 用於區分大小寫,"gi" 用於全域性區分大小寫的匹配。

例:var str="every man in the world! every woman on earth!";

patt=/man/g;

str2=str.replace(patt,"person");

document.write(str2+"

");patt=/(wo)?man/g;

patt.compile(patt);

str2=str.replace(patt,"person");

document.write(str2);

輸出:every person in the world! every woperson on earth!

every person in the world! every person on earth!

8、test() 方法用於檢測乙個字串是否匹配某個模式.

regexpobject.test(string)

string 必需。要檢測的字串。

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

例:var str = "visit w3school";

var patt1 = new regexp("w3school");

var result = patt1.test(str);

document.write("result: " + result);

輸出:result: true

---------支援正規表示式的 string 物件的方法

search   檢索與正規表示式相匹配的值。

match    找到乙個或多個正規表示式的匹配。

replace  替換與正規表示式匹配的子串。

split    把字串分割為字串陣列。

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 取盡可能大,...

javascript正規表示式之小結(二)

較常用的元字元 元字元規定其前導字元必須在目標物件中連續出現一次或多次 元字元規定其前導字元必須在目標物件中出現零次或連續多次 元字元規定其前導物件必須在目標物件中連續出現零次或一次 s 用於匹配單個空格符,包括tab鍵和換行符 s 用於匹配除單個空格符之外的所有字元 d 用於匹配從0到9的數字 w...