濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 淺談?wù)齽t表達(dá)式 實(shí)例入門(mén)

淺談?wù)齽t表達(dá)式 實(shí)例入門(mén)

熱門(mén)標(biāo)簽:惠安地圖標(biāo)注 上海銷(xiāo)售電銷(xiāo)機(jī)器人軟件 山東外呼系統(tǒng)聯(lián)系方式 哈爾濱公司外呼系統(tǒng)代理 淄博市張店區(qū)地圖標(biāo)注 地圖標(biāo)注店鋪地圖標(biāo)注酒店 遼寧秒客來(lái)電話機(jī)器人 自己做的電銷(xiāo)機(jī)器人 浙江營(yíng)銷(xiāo)外呼系統(tǒng)有哪些
很長(zhǎng)時(shí)間沒(méi)看 正則表達(dá)式了,碰巧今天用到,溫故知新了一把 看書(shū)學(xué)習(xí)吧
50% 的舉一反三練習(xí)中的原創(chuàng)。
一 javascript正則表達(dá)式的基本知識(shí)
1 javascript 正則對(duì)象創(chuàng)建 和用法
聲明javascript 正則表達(dá)式
復(fù)制代碼 代碼如下:

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

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

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

2) exec 返回查詢(xún)值
復(fù)制代碼 代碼如下:

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

3)match 得到查詢(xún)數(shù)組
復(fù)制代碼 代碼如下:

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 返回搜索位置 類(lèi)似于indexof
復(fù)制代碼 代碼如下:

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

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

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

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

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 學(xué)習(xí)下 簡(jiǎn)單類(lèi) 負(fù)向類(lèi) 范圍類(lèi) 組合類(lèi)
復(fù)制代碼 代碼如下:

//簡(jiǎn)單類(lèi)
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
}
//負(fù)向類(lèi)
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
}
//范圍類(lèi)
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
}
//組合類(lèi)
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正則 最基本的使用方法,看不會(huì)的請(qǐng)復(fù)制到筆記本練習(xí)下,看會(huì)了再往下面看。
二 javascript 正則表達(dá)式是分組知識(shí)
1) 簡(jiǎn)單分組
復(fù)制代碼 代碼如下:

script language="JavaScript">
!--
/*正則表達(dá)式 簡(jiǎn)單的分組
舉例 我們要查找字符串 MouseMouse
var reCat = /MouseMouse/gi;
盡管這是可以的,但是有點(diǎn)浪費(fèi)。如果不知道Mouse 在字符串中到底出現(xiàn)幾次時(shí)該怎么辦,如果重復(fù)多次呢。
var reCat = /(mouse){2}/gi; 括號(hào)的意思列Mouse 將在一行連續(xù)出現(xiàn)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 復(fù)雜分組
復(fù)制代碼 代碼如下:

script language="JavaScript">
!--
/*正則表達(dá)式 復(fù)雜的分組
? 零次 或 一次
* 零次 或 多次
+ 最少一次 或 多次
*/
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]);
}
// 同時(shí) 也不介意將分組放在分組中間
// var re = /(mom( and dad)?)/; 匹配出 mom 或 mon and daa
//-->
/script>

3 反向引用
復(fù)制代碼 代碼如下:

script language="JavaScript">
!--
/*正則表達(dá)式 反向引用*/
var sToMatch = "#123456789";
var reNumbers = /#(\d+)/;
reNumbers.test(sToMatch);
alert(RegExp.$1);
/*
這個(gè)例子嘗試匹配后面跟著幾個(gè)或多個(gè)數(shù)字的鎊符合,并對(duì)數(shù)字進(jìn)行分組
以存儲(chǔ)他們。在調(diào)用 test 方法后,所有的反向引用都保存到了 RegExp 構(gòu)造函數(shù)中
從 RegExp.$1(它保存了第一個(gè)反向引用)開(kāi)始,如果還有第二個(gè)反向引用,就是
RegExp.$2,如果還有第三個(gè)反向引用存在,就是 RegExp.$3.依此類(lèi)推。因?yàn)樵摻M
匹配了 “123456780”,所以 RegExp.$1 中就存儲(chǔ)了這個(gè)字符串。
*/
var sToChange = "1234 5678";
var reMatch = /(\d{4}) (\d{4})/;
var sNew = sToChange.replace(reMatch,"$2 $1");
alert(sNew);
/*
在這個(gè)例子中,正則表達(dá)式有兩個(gè)分組,每一個(gè)分組有四個(gè)數(shù)字。在 replace() 方法的第二個(gè)參數(shù)
中,$2 等同于 “5678” ,而 $1 等同于 “1234”,對(duì)應(yīng)于它們?cè)诒磉_(dá)式中的出現(xiàn)順序。
*/
//-->
/script>

4 候選
復(fù)制代碼 代碼如下:

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

5 非捕獲性分組
復(fù)制代碼 代碼如下:

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

6 前瞻
復(fù)制代碼 代碼如下:

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

7 邊界
復(fù)制代碼 代碼如下:

script language="JavaScript">
!--
/*正則表達(dá)式 邊界
^ 行開(kāi)頭
$ 行結(jié)尾
\b 單詞的邊界
\B 非單詞的邊界
*/
var sToMatch = "Important word is the last one.";
var reLastWord = /(\w+)\.$/;
reLastWord.test(sToMatch);
alert(RegExp.$1); //one
/*
假如想查找一個(gè)單詞,但要它只出現(xiàn)在行尾,則可以使用美元符號(hào) ($)來(lái)表示它:
*/
var sToMatch = "Important word is the last one.";
var reLastWord = /^(\w+)/;
reLastWord.test(sToMatch);
alert(RegExp.$1); //Important
/*
在這個(gè)例子中,正則表達(dá)式查找行起始位置后的一個(gè)或多個(gè)單詞字符。如果遇到非單詞字符
匹配停止,返回 Important。 這個(gè)例子也可以用單詞邊界實(shí)現(xiàn)。
*/
var sToMatch = "Important word is the last one.";
var reLastWord = /^(.+?)\b/;
reLastWord.test(sToMatch);
alert(RegExp.$1); //Important
/*
這里,正則表達(dá)式用惰性量詞來(lái)制定在單詞邊界之前可以出現(xiàn)任何字符,且可以出現(xiàn)一次或
多次(如果使用貪婪性量詞,表達(dá)式就匹配整個(gè)字符串)。
*/
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
復(fù)制代碼 代碼如下:

script language="JavaScript">
!--
/*正則表達(dá)式 多行模式
要制定多行模式,只要在正則表達(dá)式想要匹配的行末的一個(gè)單詞
*/
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]);
}
/*
上面只返回一個(gè)單詞 sixth,因?yàn)閾Q行符阻擋了匹配,只能匹配行末的一個(gè)單詞,
當(dāng)然也可以使用 split() 方法將字符串分割成數(shù)組,但就得對(duì)每一行進(jìn)行單獨(dú)匹配。
以前不好好看書(shū)經(jīng)常半吊子,看一半就仍了,導(dǎo)致用了好多 split, 其實(shí)很簡(jiǎn)單如下面
例子 只需要 m 參數(shù)進(jìn)行多行匹配。
*/
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>

至此結(jié)束,這些都是 javascript 正則表達(dá)式的基本方法,如果你看會(huì)了看復(fù)雜的正則你會(huì)有豁然開(kāi)朗的感覺(jué)。

標(biāo)簽:銅川 泰州 長(zhǎng)沙 重慶 無(wú)錫 綿陽(yáng) 西安 宣城

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺談?wù)齽t表達(dá)式 實(shí)例入門(mén)》,本文關(guān)鍵詞  淺談,正則,表達(dá)式,實(shí)例,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺談?wù)齽t表達(dá)式 實(shí)例入門(mén)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于淺談?wù)齽t表達(dá)式 實(shí)例入門(mén)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    衡东县| 武城县| 九龙城区| 壤塘县| 金川县| 弥勒县| 崇州市| 黔西| 雷波县| 秦安县| 云梦县| 越西县| 张北县| 丹棱县| 探索| 永新县| 黄平县| 盘山县| 万盛区| 嘉峪关市| 抚宁县| 宜都市| 平果县| 信宜市| 田东县| 都江堰市| 工布江达县| 扬州市| 廊坊市| 临洮县| 苍山县| 金坛市| 新绛县| 斗六市| 汝南县| 阜宁县| 泸水县| 安溪县| 永仁县| 门头沟区| 松溪县|