JavaScript RegExp 對象
RegExp:是正則表達式(regular expression)的簡寫
正則表達式用於對字符串模式匹配及檢索替換,是對字符串執行模式匹配的強大工具
語法:
var patt=new RegExp(pattern,modifiers);
或者
var patt=/pattern/modifiers;
其中:
pattern:代表正則表達式
modifiers:代表修飾符
修飾符:
i 執行對大小寫不敏感的匹配。
g 執行全局匹配(查找所有匹配而非在找到第一個匹配後停止)。
m 執行多行匹配。
案例(匹配hello、忽略大小寫):
var str = "HELLO world!";
var patt1 = /hello/i;
document.write(str.match(patt1));
輸出:
HELLO
注意:當使用構造函數創造正則對象時,需要常規的字符轉義規則(在前面加反斜槓 \)。如,匹配\w時需要加\,以下是等價的:
// +表示匹配一次或多次
var re = new RegExp("\\w+");
var re = /\w+/;
方括號
用於查找某個範圍內的字符:
[abc] 查找方括號之間的任何字符。
[^abc] 查找任何不在方括號之間的字符。
[0-9] 查找任何從 0 至 9 的數字。
[a-z] 查找任何從小寫 a 到小寫 z 的字符。
[A-Z] 查找任何從大寫 A 到大寫 Z 的字符。
[A-z] 查找任何從大寫 A 到小寫 z 的字符。
[adgk] 查找給定集合內的任何字符。
[^adgk] 查找給定集合外的任何字符。
元字符
擁有特殊含義的字符
. 查找單個字符,除了換行和行結束符。
\w 查找數字、字母及下劃線。
\W 查找非單詞字符。
\d 查找數字。
\D 查找非數字字符。
\s 查找空白字符。
\S 查找非空白字符。
\b 匹配單詞邊界。
\B 匹配非單詞邊界。
\0 查找 NULL 字符。
\n 查找換行符。
\f 查找換頁符。
\r 查找回車符。
\t 查找製表符。
\v 查找垂直製表符。
量詞
定義正則匹配的次數
? 匹配0次或1次
+ 匹配1次或多次
* 匹配0次或多次
{n} 匹配n次
{n,} 匹配n次或n次以上
{n,m} 匹配n次到m次
RegExp 對象方法
-
test()
搜索字符串指定的值,根據結果返回true或falsevar patt1=new RegExp("a"); document.write(patt1.test("abc"));輸出:
true -
exec()
檢索字符串中的指定值。返回值是被找到的值。如果沒有發現匹配,則返回 nullvar patt1=new RegExp("a"); document.write(patt1.exec("abc"));輸出:
a -
toString()
返回正則表達式的字符串var patt = new RegExp("RUNOOB", "g"); var res = patt.toString(); document.write(res);輸出:
/RUNOOB/g
支持正則表達式的 String 對象的方法
-
search()
檢索匹配正則表達式的值的個數var str="Visit Runoob!"; var n=str.search("Runoob"); document.write(n);輸出:
6 -
match()
匹配滿足正則表達式的值,如果沒有找到任何匹配的文本,返回 null。否則,它將返回一個數組var str="abcabcdabcde"; var n=str.match(/abc/g); document.write(n);輸出:
[abc,abc,abc] -
replace()
替換與正則表達式匹配的子串。var str="hello world!"; var n=str.replace("hello","你好"); document.write(n);輸出:
你好 world! -
split()
把字符串分割為字符串數組。var str="2022-1-1"; var n=str.split("-"); document.write(n);輸出:
[2022,1,1]