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...