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

首頁 > 編程 > Regex > 正文

淺談JavaScript正則表達式的基本方法

2024-09-07 17:40:05
字體:
來源:轉載
供稿:網友

正則表達式由一類元字符和其他字符組成,可以匹配限定字符,其實小編很長時間沒有接觸到正則表達式了,今天在使用的過程中碰到了,就和大家一起溫習一下這些知識吧!
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
久久精品国产综合| 亚洲四色影视在线观看| 久久五月天色综合| 国产成人小视频在线观看| 欧美黄色片免费观看| 日韩电影免费观看在线| 欧美孕妇毛茸茸xxxx| 亚洲午夜久久久久久久| 日韩一区二区福利| 国产精品第三页| 一区二区三区 在线观看视| 久久网福利资源网站| 亚洲第一中文字幕在线观看| 午夜精品蜜臀一区二区三区免费| 久色乳综合思思在线视频| 久久久久999| 亚洲国模精品私拍| 欧美成人性色生活仑片| 成人免费观看网址| 欧美中文字幕在线视频| 欧美高清自拍一区| 国产成人综合精品在线| 中文字幕日韩av综合精品| 色哟哟网站入口亚洲精品| 亚洲视频国产视频| 欧美一区第一页| 久久免费在线观看| 亚洲人线精品午夜| 欧美xxxx做受欧美| 91美女高潮出水| 在线观看国产精品91| 色噜噜亚洲精品中文字幕| 韩国三级电影久久久久久| 久久免费在线观看| 亚洲精品视频网上网址在线观看| 欧美性做爰毛片| 中文字幕九色91在线| 国产精品av免费在线观看| 日韩av在线看| 久久久久久久成人| 欧美视频免费在线观看| 久久久久久久久亚洲| 国产精品精品视频| 中文字幕亚洲自拍| 1769国产精品| 日韩精品免费在线观看| 亚洲国产天堂网精品网站| 高清视频欧美一级| 欧洲中文字幕国产精品| 秋霞午夜一区二区| 国产在线精品播放| 最近中文字幕mv在线一区二区三区四区| 日韩欧美在线字幕| 97人人做人人爱| 欧美亚洲成人精品| 奇门遁甲1982国语版免费观看高清| 亚洲少妇激情视频| 最近2019年手机中文字幕| 97婷婷大伊香蕉精品视频| 91久热免费在线视频| 精品亚洲国产视频| 日本高清+成人网在线观看| 日本高清视频一区| 色yeye香蕉凹凸一区二区av| 亚洲91精品在线| 亚洲老板91色精品久久| 亚洲日本欧美日韩高观看| 国产精品尤物福利片在线观看| 欧美色视频日本高清在线观看| 欧美理论电影在线播放| 国产精品2018| 亚洲韩国青草视频| 亚洲乱码国产乱码精品精天堂| 亚洲欧美日韩在线一区| 精品日韩美女的视频高清| 91九色综合久久| 亚洲黄色片网站| 国产又爽又黄的激情精品视频| 久久精品99无色码中文字幕| 成人在线免费观看视视频| 亚洲国产精品成人精品| 日本国产欧美一区二区三区| 亚州精品天堂中文字幕| 国内伊人久久久久久网站视频| 国产精品一久久香蕉国产线看观看| 欧美精品免费在线观看| 日韩激情视频在线| 亚洲精品少妇网址| 亚洲自拍偷拍第一页| 亚洲欧美另类国产| 午夜精品久久久久久久99黑人| 亚洲人成电影在线播放| 国产丝袜一区二区| 欧美在线视频一区| 91精品国产高清久久久久久| 亚洲第一中文字幕在线观看| 亚洲影影院av| 日韩国产精品亚洲а∨天堂免| 欧美夫妻性视频| 亚洲а∨天堂久久精品喷水| 欧美日韩在线第一页| 亚洲乱码av中文一区二区| 精品一区二区三区四区在线| 国产在线98福利播放视频| 亚洲成色777777女色窝| 亚洲毛片一区二区| 亚洲区bt下载| 精品亚洲一区二区三区在线播放| 最近中文字幕mv在线一区二区三区四区| 91日本在线观看| 欧美性生交大片免费| 日韩欧美成人精品| 成人免费淫片视频软件| 狠狠躁夜夜躁人人爽超碰91| 国产精品色午夜在线观看| 日本久久久久久久| 久久频这里精品99香蕉| 91亚洲精品久久久| 国产精品一区二区久久| 97在线精品国自产拍中文| 欧美成人午夜激情视频| 国产一区二区久久精品| 国产一区二区三区四区福利| 成人黄色av免费在线观看| 欧美自拍大量在线观看| 国产精品久久久久影院日本| 成人av资源在线播放| 国产精品入口夜色视频大尺度| 欧美电影在线观看高清| 精品久久久久国产| 久久久久九九九九| 欧美另类极品videosbest最新版本| 95av在线视频| 国产精品自拍小视频| 欧美色道久久88综合亚洲精品| 日本欧美在线视频| 最近2019免费中文字幕视频三| 992tv成人免费影院| 夜夜嗨av色一区二区不卡| 久久九九热免费视频| 亚洲japanese制服美女| 国产中文字幕亚洲| 欧美乱妇40p| 中文字幕av一区二区三区谷原希美| 欧洲精品在线视频| 久久青草福利网站| 影音先锋欧美精品| 亚洲高清在线观看| 一本色道久久综合亚洲精品小说| 精品国产福利视频| 高清一区二区三区四区五区| 亚洲精品视频免费在线观看| 久久精品国产免费观看| 2019亚洲男人天堂| 777国产偷窥盗摄精品视频| 日韩高清av在线| 在线观看中文字幕亚洲| 日韩中文字幕精品视频| 亚洲女人天堂网| 亚洲欧美日韩一区二区三区在线| 亚洲精品一区二区三区婷婷月| 不用播放器成人网| 国产精品第七影院| 中文字幕一区二区三区电影|