亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Regex > 正文

淺談正則表達式 實例入門

2020-03-16 21:13:49
字體:
來源:轉載
供稿:網友
這些都是 javascript 正則表達式的基本方法,如果你看會了看復雜的正則你會有豁然開朗的感覺。
 
 
很長時間沒看 正則表達式了,碰巧今天用到,溫故知新了一把 看書學習吧 
50% 的舉一反三練習中的原創。 
一 javascript正則表達式的基本知識 
1 javascript 正則對象創建 和用法 
聲明javascript 正則表達式 
復制代碼代碼如下:

var reCat = new RegExp("cat"); 
你也可以 
var reCat = /cat/; //Perl 風格 (推薦) 

2 學習最常用的 test exec match search replace split 6個方法 
1) test 檢查指定的字符串是否存在 
復制代碼代碼如下:

var data = "123123"; 
var reCat = /123/gi; 
alert(reCat.test(data)); //true 
//檢查字符是否存在 g 繼續往下走 i 不區分大小寫 

2) exec 返回查詢值 
復制代碼代碼如下:

var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,"; 
var reCat = /cat/i; 
alert(reCat.exec(data)); //Cat 

3)match 得到查詢數組 
復制代碼代碼如下:

var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,"; 
var reCat = /cat/gi; 
var arrMactches = data.match(reCat) 
for (var i=0;i < arrMactches.length ; i++) 

alert(arrMactches[i]); //Cat cat 

4) search 返回搜索位置 類似于indexof 
復制代碼代碼如下:

var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,"; 
var reCat = /cat/gi; 
alert(data.search(reCat)); //23 

5) replace 替換字符 利用正則替換 
復制代碼代碼如下:

var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,"; 
var reCat = /cat/gi; 
alert(data.replace(reCat,"libinqq")); 

6)split 利用正則分割數組 
復制代碼代碼如下:

var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,"; 
var reCat = //,/; 
var arrdata = data.split(reCat); 
for (var i = 0; i < arrdata.length; i++) 

alert(arrdata[i]); 

3 學習下 簡單類 負向類 范圍類 組合類 
復制代碼代碼如下:

//簡單類 
var data = "1libinqq,2libinqq,3libinqq,4libinqq"; 
var reCat = /[123]libinqq/gi; 
var arrdata = data.match(reCat); 
for (var i = 0; i < arrdata.length; i++) 

alert(arrdata[i]); // 1libinqq 2libinqq 3libinqq 

//負向類 
var data = "alibinqq,1libinqq,2libinqq,3libinqq,4libinqq"; ///u0062cf 
var reCat = /[^a123]libinqq/gi; 
var arrdata = data.match(reCat); 
for (var i = 0; i < arrdata.length; i++) 

alert(arrdata[i]); //4libinqq 

//范圍類 
var data = "libinqq1,libinqq2,libinqq3,libinqq4,libinqq5"; ///u0062cf 
var reCat = /libinqq[2-3]/gi; 
var arrdata = data.match(reCat); 
for (var i = 0; i < arrdata.length; i++) 

alert(arrdata[i]); // libinqq2 libinqq3 

//組合類 
var data = "a,b,c,w,1,2,3,5"; ///u0062cf 
var reCat = /[a-q1-4/n]/gi; 
var arrdata = data.match(reCat); 
for (var i = 0; i < arrdata.length; i++) 

alert(arrdata[i]); // a b c 1 2 3 

這些都是 js正則 最基本的使用方法,看不會的請復制到筆記本練習下,看會了再往下面看。 
二 javascript 正則表達式是分組知識 
1) 簡單分組 
復制代碼代碼如下:

<script language="JavaScript"> 
<!-- 
/*正則表達式 簡單的分組 
舉例 我們要查找字符串 MouseMouse 
var reCat = /MouseMouse/gi; 
盡管這是可以的,但是有點浪費。如果不知道Mouse 在字符串中到底出現幾次時該怎么辦,如果重復多次呢。 
var reCat = /(mouse){2}/gi; 括號的意思列Mouse 將在一行連續出現2次。 
*/ 
var data = "Ah-mousemouse"; 
var reCat = /(mouse){2}/gi; 
var arrdata = data.match(reCat); 
for (var i = 0; i < arrdata.length; i++) 

alert(arrdata[i]); 

//--> 
</script> 

2 復雜分組 
復制代碼代碼如下:

<script language="JavaScript"> 
<!-- 
/*正則表達式 復雜的分組 
? 零次 或 一次 
* 零次 或 多次 
+ 最少一次 或 多次 
*/ 
var data = "bb ba da bad dad aa "; 
var reCat = /([bd]ad?)/gi; // 匹配出 ba da bad dad 
var arrdata = data.match(reCat); 
for (var i = 0; i < arrdata.length; i++) 

alert(arrdata[i]); 

// 同時 也不介意將分組放在分組中間 
// var re = /(mom( and dad)?)/; 匹配出 mom 或 mon and daa 
//--> 
</script> 

3 反向引用 
復制代碼代碼如下:

<script language="JavaScript"> 
<!-- 
/*正則表達式 反向引用*/ 
var sToMatch = "#123456789"; 
var reNumbers = /#(/d+)/; 
reNumbers.test(sToMatch); 
alert(RegExp.$1); 
/* 
這個例子嘗試匹配后面跟著幾個或多個數字的鎊符合,并對數字進行分組 
以存儲他們。在調用 test 方法后,所有的反向引用都保存到了 RegExp 構造函數中 
從 RegExp.$1(它保存了第一個反向引用)開始,如果還有第二個反向引用,就是 
RegExp.$2,如果還有第三個反向引用存在,就是 RegExp.$3.依此類推。因為該組 
匹配了 “123456780”,所以 RegExp.$1 中就存儲了這個字符串。 
*/ 
var sToChange = "1234 5678"; 
var reMatch = /(/d{4}) (/d{4})/; 
var sNew = sToChange.replace(reMatch,"$2 $1"); 
alert(sNew); 
/* 
在這個例子中,正則表達式有兩個分組,每一個分組有四個數字。在 replace() 方法的第二個參數 
中,$2 等同于 “5678” ,而 $1 等同于 “1234”,對應于它們在表達式中的出現順序。 
*/ 
//--> 
</script> 

4 候選 
復制代碼代碼如下:

<script language="JavaScript"> 
<!-- 
/*正則表達式 候選 */ 
var sToMatch1 = "red"; 
var sToMatch2 = "black"; 
var reRed = /red/; 
var reBlack = /black/; 
alert(reRed.test(sToMatch1) || reBlack.test(sToMatch1)); 
alert(reRed.test(sToMatch2) || reBlack.test(sToMatch2)); 
/* 
這雖然能完成任務,但是十分沉長,還有另一種方式就是正則表達式的候選操作符。 
*/ 
var sToMatch1 = "red"; 
var sToMatch2 = "black"; 
var reRedOrBlack = /(red|black)/; 
alert(reRedOrBlack.test(sToMatch1)); 
alert(reRedOrBlack.test(sToMatch2)); 
//--> 
</script> 

5 非捕獲性分組 
復制代碼代碼如下:

<script language="JavaScript"> 
<!-- 
/*正則表達式 非捕獲性分組 
如果要創建一個非捕獲性分組,只要在左括號的后面加上一個問號和一個緊跟的冒號: 
*/ 
var sToMatch = "#123456789"; 
var reNumbers = /#(?:/d+)/; 
reNumbers.test(sToMatch); 
alert(RegExp.$1); 
/* 
這個例子的最后一行代碼輸出一個空字符串,因為該組是非捕獲性的, 
*/ 
var sToMatch = "#123456789"; 
var reNumbers = /#(?:/d+)/; 
alert(sToMatch.replace(reNumbers,"abcd$1")); 
/* 
正因如此,replace()方法就不能通過 RegExp.$x 變量來使用任何反向引用,這段代碼 
輸出的“abcd$1”而不是abcd123456789, 因為$1 在這里并不被看成是一個反向引用。 
*/ 
//--> 
</script> 

6 前瞻 
復制代碼代碼如下:

<script language="JavaScript"> 
<!-- 
/*正則表達式 前瞻 
前瞻 就和它名字一樣,它告訴正則表達式運算器向前看一些字符而不是移動位置 
*/ 
var sToMatch1 = "bedroom"; 
var sToMatch2 = "bedding"; 
var reBed = /bed(?=room)/; 
alert(reBed.test(sToMatch1)); //true 
alert(reBed.test(sToMatch2)); //false 
//負向前瞻 
var sToMatch1 = "bedroom"; 
var sToMatch2 = "bedding"; 
var reBed = /bed(?!room)/; 
alert(reBed.test(sToMatch1)); //false 
alert(reBed.test(sToMatch2)); //true 
//--> 
</script> 

7 邊界 
復制代碼代碼如下:

<script language="JavaScript"> 
<!-- 
/*正則表達式 邊界 
^ 行開頭 
$ 行結尾 
/b 單詞的邊界 
/B 非單詞的邊界 
*/ 
var sToMatch = "Important word is the last one."; 
var reLastWord = /(/w+)/.$/; 
reLastWord.test(sToMatch); 
alert(RegExp.$1); //one 
/* 
假如想查找一個單詞,但要它只出現在行尾,則可以使用美元符號 ($)來表示它: 
*/ 
var sToMatch = "Important word is the last one."; 
var reLastWord = /^(/w+)/; 
reLastWord.test(sToMatch); 
alert(RegExp.$1); //Important 
/* 
在這個例子中,正則表達式查找行起始位置后的一個或多個單詞字符。如果遇到非單詞字符 
匹配停止,返回 Important。 這個例子也可以用單詞邊界實現。 
*/ 
var sToMatch = "Important word is the last one."; 
var reLastWord = /^(.+?)/b/; 
reLastWord.test(sToMatch); 
alert(RegExp.$1); //Important 
/* 
這里,正則表達式用惰性量詞來制定在單詞邊界之前可以出現任何字符,且可以出現一次或 
多次(如果使用貪婪性量詞,表達式就匹配整個字符串)。 
*/ 
var data = " First second thind fourth fifth sixth "; 
var reCat = //b(/S+?)/b/g; 
var arrdata = data.match(reCat); 
for (var i = 0; i < arrdata.length; i++) 

alert(arrdata[i]); 

/* 
使用單詞邊界可以方便地從字符串中抽取單詞。 
*/ 
//--> 
</script> 

8 多行模式 
Code 
復制代碼代碼如下:

<script language="JavaScript"> 
<!-- 
/*正則表達式 多行模式 
要制定多行模式,只要在正則表達式想要匹配的行末的一個單詞 
*/ 
var data = " First second/n thind fourth/n fifth sixth"; 
var reCat = /(/w+)$/g; 
var arrdata = data.match(reCat); 
for (var i = 0; i < arrdata.length; i++) 

alert(arrdata[i]); 

/* 
上面只返回一個單詞 sixth,因為換行符阻擋了匹配,只能匹配行末的一個單詞, 
當然也可以使用 split() 方法將字符串分割成數組,但就得對每一行進行單獨匹配。 
以前不好好看書經常半吊子,看一半就仍了,導致用了好多 split, 其實很簡單如下面 
例子 只需要 m 參數進行多行匹配。 
*/ 
var data = " First second/n thind fourth/n fifth sixth"; 
var reCat = /(/w+)$/gm; 
var arrdata = data.match(reCat); 
for (var i = 0; i < arrdata.length; i++) 

alert(arrdata[i]); 

//--> 
</script> 

至此結束,這些都是 javascript 正則表達式的基本方法,如果你看會了看復雜的正則你會有豁然開朗的感覺。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一级大片视频| 18性欧美xxxⅹ性满足| 国产中文字幕亚洲| 成人日韩av在线| 日韩三级成人av网| 亚洲free性xxxx护士白浆| 久久久久北条麻妃免费看| 91香蕉嫩草影院入口| 欧美日韩国产一区二区三区| 亚洲人成亚洲人成在线观看| 亚洲午夜小视频| 国产精品十八以下禁看| 欧美成人精品影院| 91久久国产精品| 日韩精品免费在线视频观看| 高清一区二区三区四区五区| 亚洲第一精品福利| 91嫩草在线视频| 精品视频在线播放色网色视频| 国内精品视频在线| 国产一区香蕉久久| 法国裸体一区二区| 成人免费在线视频网站| 国产精品视频一区国模私拍| 国产精品一二区| 国产精品9999| 黄色成人在线免费| 亚洲精品电影在线观看| 日韩美女中文字幕| 4438全国亚洲精品在线观看视频| 亚洲国产精品资源| 日韩美女视频在线观看| 成人国产亚洲精品a区天堂华泰| 精品综合久久久久久97| 欧美成年人视频网站欧美| 日韩在线观看精品| 国产精品十八以下禁看| 91精品免费看| 亚洲国产黄色片| 国产精品成人av性教育| 国产精品亚洲一区二区三区| 精品中文字幕久久久久久| 一本大道香蕉久在线播放29| 日韩在线视频网| 亚洲大胆人体在线| 精品亚洲一区二区三区四区五区| 国产精选久久久久久| 久久人人爽人人爽人人片av高清| 久久精品男人天堂| 成人中文字幕在线观看| 国产精品视频在线观看| 久久精品亚洲一区| 欧美在线激情视频| 91香蕉电影院| 精品国产欧美一区二区三区成人| 1769国产精品| 亚洲欧美一区二区精品久久久| 久久精品国产成人精品| 欧美国产日韩中文字幕在线| 日韩在线观看高清| 日韩在线观看高清| 国产精品a久久久久久| 91精品国产综合久久男男| 91网在线免费观看| 国产精品视频xxx| 韩国视频理论视频久久| 欧美日韩色婷婷| 日韩av手机在线观看| 亚洲第一av网站| 日韩av在线不卡| 久久九九有精品国产23| 国产一区二区三区精品久久久| 久久久久久久久久久亚洲| 精品久久久久久久久久久久久久| 色视频www在线播放国产成人| 岛国av一区二区在线在线观看| 亚洲欧美日韩中文视频| 精品久久久久久久久久| 欧美成年人在线观看| 亚洲精品免费在线视频| 午夜免费在线观看精品视频| 欧美日韩国产一区在线| 欧美日韩激情视频8区| 精品中文字幕在线观看| 国产精品久久久久久久久久免费| 日本高清+成人网在线观看| 久久久91精品国产一区不卡| 欧美高清videos高潮hd| 亚洲天堂免费在线| 国产成人精品网站| 日韩欧美在线视频日韩欧美在线视频| 日韩欧美在线视频| 国产欧美在线看| 91老司机精品视频| 久久久久久国产精品三级玉女聊斋| 人人做人人澡人人爽欧美| 亚洲精品suv精品一区二区| 91久久久精品| 夜色77av精品影院| 国产亚洲精品91在线| 亚洲黄页网在线观看| 欧美精品www在线观看| 中文字幕亚洲天堂| 欧美中文字幕视频在线观看| 日韩最新av在线| 韩曰欧美视频免费观看| 一区二区在线免费视频| 久热在线中文字幕色999舞| 国产精品久久久久免费a∨| 亚洲日韩欧美视频一区| 一区二区三区高清国产| 精品视频在线播放色网色视频| 亚洲精品不卡在线| 91免费国产网站| 午夜精品久久久久久久99黑人| 国产精品网红直播| 午夜美女久久久久爽久久| 在线播放国产一区中文字幕剧情欧美| 国产精品久久久久影院日本| 日韩在线观看网址| 欧美三级免费观看| 国产精品精品久久久| 亚洲欧美精品一区| 成人女保姆的销魂服务| 91亚洲精华国产精华| 久久精品国产99国产精品澳门| 成人激情在线观看| 日韩资源在线观看| 欧美香蕉大胸在线视频观看| 91免费国产视频| 欧美黄色片在线观看| 国产精品亚洲视频在线观看| 久久五月天综合| 91免费看片在线| 午夜精品久久久久久久99黑人| 不卡av日日日| 亚洲成在人线av| 永久免费精品影视网站| 久久久久久噜噜噜久久久精品| 欧美乱人伦中文字幕在线| 国产91色在线|免| 免费av在线一区| 成人免费激情视频| 久久精品99久久香蕉国产色戒| 久久国内精品一国内精品| 日韩免费观看网站| 国产精品视频一区二区三区四| 亚洲人成电影在线观看天堂色| 欲色天天网综合久久| 国产不卡精品视男人的天堂| 久久亚洲精品一区二区| 国产精品入口夜色视频大尺度| 大伊人狠狠躁夜夜躁av一区| 欧美日韩国产综合新一区| 亚洲日韩中文字幕在线播放| 国产三级精品网站| 成人午夜在线观看| 欧美午夜无遮挡| 久久亚洲国产精品成人av秋霞| 日本精品视频在线观看| 亚洲欧美国内爽妇网| 久久视频精品在线| 亚洲精品久久久久久久久久久久久| 午夜美女久久久久爽久久|