JS正則表示式RegExp的總結
RegExp模式概念:
當你需要在一個目標字串中,檢索或操作一種型別的子字串(該型別用RegExp來描述,包括了抽象,數量,位置和邏輯組合構成),那麼就需要使用RegExp物件。
一、RegExp物件的組成:
RegExp物件由字元模式和搜尋範圍組成。
字串模式的型別:
(1). 字元和模式:字串長度確定的模式(包括確定的字串和模糊匹配的字元)"%d%d/%d%d/%d%d%d%d", “Jackson”,本身就是表達了與的關係。
(2).自定義組合邏輯或非:字串模式中任意一個都遍歷目標串的模式([], (),邏輯與或|, ^非),[AEIOUaeiou]匹配母音,“([a-z][A-Z][0-9])+”()是將幾個或組合在一起匹配aB0。”[to|too|2]
(3). 數量:字元模式個數的修飾,+,-,*,?,{n}元符號;“fo+”與football匹配。
(4). 位置:字串模式位置的修飾,^,$,\b, \B;”ar$”和car匹配。
(5). 轉義符號\, “Th\*”與Th*匹配,常規模式在字串中也要”\\s”,前面的\也是轉義字元。
搜尋範圍有i, g, m:
i 執行對大小寫不敏感的匹配。
g 執行全域性匹配(查詢所有匹配而非在找到第一個匹配後停止)。
m 執行多行匹配。
二、RegExp物件的獲得:
RegExp物件可以用:var p1 =newRegExp("[^xyz]
三、RegExp物件的使用:
RegExp物件可以在RegExp物件方法:test,exec,compile;string物件search,match,replace,split方法中使用。
RegExp中使用正則表示式:
test() 方法檢索字串中的指定值。返回值是 true 或 false。
exec() 方法檢索字串中的指定值。返回值是被找到的值。如果沒有發現匹配,則返回 null。
compile() 方法用於改變 RegExp。也可以新增或刪除第二個引數。
在使用 "g" 引數時,exec()的工作原理如下:
找到第一個"e",並存儲其位置
如果再次執行 exec(),則從儲存的位置開始檢索,並找到下一個 "e",並存儲其位置。
例子1:
<html>
<head>
function testRE()
{
varpatt1=new RegExp("e");
document.write(patt1.exec("Thebestthings in life are free"));
varpatt1=newRegExp("e","g");
do
{
result=patt1.exec("Thebest things inlife are free");
document.write(‘\n’);
document.write(result);//第一次eeeeee
}
while(result!=null);
}
</head>
<body onload = testRE()>
</body>
<html>
由於這個字串中 6 個 "e" 字母,程式碼的輸出將是:
ee e e e e e null 7
string中使用正則表示式:
例子2:
<html>
<head>
<script>
onerror=handleErr;// 錯誤的除錯
functionhandleErr(msg,url,l)
{
txt="本頁中存在錯誤。\n\n"
txt+="錯誤:" + msg +"\n"
txt+="URL:" + url + "\n"
txt+="行:" + l +"\n\n"
txt+="點選“確定”繼續。\n\n"
alert(txt)
returntrue
}
function testE(valueStr)
{
varstr = valueStr;//arguments[0];
varstrResult = str.replace(/[^\w\s]/g,'0');// 非單詞且非空白字元用0代替
document.write(strResult);
}
</script>
</head>
<body onload = "testE('Give100%!')"> // 帶有引數的js函式呼叫需要""號修飾(若不修飾,則只能是無參函式)
</body>
</html>
更多的模式規則訪問:
http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp
參考:
http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp
http://www.php100.com/html/webkaifa/javascript/2010/0803/5130.html