1. 程式人生 > >JS正則表示式RegExp的總結

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]

”;^在[]內為非,否則為定位符號;與可以用或來表達/[^\w\s]/g

(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]

", "g")獲得,或直接用var p1=/[^xyz]/g獲得。

三、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