成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

正則基礎(chǔ)詳解

YanceyOfficial / 2847人閱讀

摘要:正則基礎(chǔ)詳解開(kāi)頭,結(jié)尾匹配次或多次匹配次匹配次或次當(dāng)跟在后面時(shí),匹配模式是非貪婪的匹配確定是次,非負(fù)數(shù)匹配除了換行符以外的任何字符包括點(diǎn)本身小括號(hào)中的內(nèi)容只匹配不捕獲正向預(yù)查負(fù)向預(yù)查匹配或者匹配中任何一個(gè)匹配未包含的任意字符匹配指定范圍

正則基礎(chǔ)詳解
/^開(kāi)頭,結(jié)尾$/
* 匹配0次或多次
+ 匹配1-n次
?匹配0次或1次;  當(dāng)?跟在 * + {n}  {n,m} {n,} 后面時(shí),匹配模式是非貪婪的
{n} 匹配確定是n次,n非負(fù)數(shù)
.  匹配除了換行符
以外的任何字符 包括點(diǎn)本身
(?:pattern) 小括號(hào)中的內(nèi)容只匹配不捕獲
(?=pattern) 正向預(yù)查
(?!pattern) 負(fù)向預(yù)查
x|y 匹配x或者y
[xyz] 匹配xyz中任何一個(gè)
[^xyz]匹配未包含xyz的任意字符
[a-z]匹配指定范圍的字符
[^a-z]匹配不在a到z范圍內(nèi)的任意字符

 匹配一個(gè)單詞的邊界 /er/ 能匹配 never 中的er  不能匹配 verb 中的er
B 匹配非單詞邊界

d  任意一個(gè)數(shù)字
D  任意一個(gè)非數(shù)字

w 匹配包括下劃線(xiàn)的任意字符  [a-zA-Z0-9]
W 匹配任何非單詞字符

s 空白字符
S 非空白字符


 匹配任意一個(gè)換行字符

 回車(chē)

reg.exec(str) 返回一個(gè)數(shù)組
[  0: 匹配到的大正則,  1: 匹配到的小分組1,  2: 小分組2,  3: 匹配到的第一個(gè)字符的索引,  4:input:整個(gè)str  ]

reg.test(str) 返回true/false


   // 1.反向引用  /(捕獲的小分組)數(shù)字/
    var reg=/(w)(w)21/;// 2 第二個(gè)小分組匹配到的內(nèi)容,1 第一個(gè)小分組匹配到的內(nèi)容
    var str="woow";
    console.log(reg.exec(str));// ["woow", "w", "o", index: 0, input: "woow"]
 //
 //  var reg = /(捕獲的小分組)數(shù)字/;  數(shù)字 代表的是反向引用,表示 第幾個(gè)括號(hào)內(nèi)的子正則表達(dá)式所捕獲的內(nèi)容,如果小分組加了(?:=pattern),那么反向引用就不管用了。

    //2.小分組只匹配不捕獲  (?:=pattern)
    var reg1=/^(?:b|c).+/;
    var str1="bbs.www.baidu.cn";
    console.log(reg1.exec(str1));//  小分組只匹配不捕獲  (?:=pattern)
    //["bbs.www.baidu.cn", index: 0, input: "bbs.www.baidu.cn"]

    //3.正向預(yù)查(?=pattern) 要求匹配的時(shí)候滿(mǎn)足括號(hào)中的條件
    //  反向預(yù)查 (?!pattern) 要求匹配的時(shí)候不滿(mǎn)足括號(hào)中的條件
    //  小括號(hào)中的內(nèi)容只匹配不捕獲
    var reg3=/cai(?=8)/;
    var str3="cai9";
    var str4="cai8";
    console.log(reg3.exec(str3));// null
    console.log(reg3.exec(str4));// ["cai", index: 0, input: "cai8"]
    var reg4=/zhufeng(?!shanshang)/;
    var string="zhufengshanshang";
    var string1="zhufengshanshang";
    console.log(reg4.exec(string));// null
    console.log(reg4.exec(string1));//  ["zhufeng", index: 0, input: "zhufengshanshang"]


    //4. 匹配元字符 * +  ? .  就是它們本身就有特殊意義的,需要轉(zhuǎn)義 
    var reg5=/c*/;
    var str05="c*";
    console.log(reg5.exec(str05));//["c*", index: 0, input: "c*"]

    //5.全局修飾符 ,g  不區(qū)分大小寫(xiě) i ,行首行尾 m

    //6.[abc] a或b或c 中的任意一個(gè)
    //  [^] 所有的非空字符 不是空格, ^在/^/是以...開(kāi)頭的意思。在[^]是非的意思
    // [1-13] 從1到1或從1到3  不是1-13
    //[元字符] 表示元字符本身的意義,如 [.]表示點(diǎn)本身,不是 除了/n以外的任何字符

    //7. | 或者
    var reg06=/^(z|0).+/;
    var s="zhufeng";
    console.log(reg06.exec(s));// ["zhufeng", "z", index: 0, input: "zhufeng"]

    // 8.貪心匹配:在合法的情況下,正則會(huì)盡量多的去匹配字符,能匹配到4個(gè),絕不會(huì)匹配3個(gè)
    //   非貪心匹配:?  如 {n,}?  *?  +?  {m,n}?

    //9.c{n} 匹配固定n個(gè)
    //  c{m,n} 匹配m到n個(gè)
    //  c{n,} 最少匹配n個(gè),最多不限制

    //10.exec 與 全局修飾符g
    // 如果沒(méi)加全局修飾符g,執(zhí)行多少次都一樣
    // 需要手動(dòng)多次執(zhí)行,每次執(zhí)行都會(huì)進(jìn)行新的匹配, 改變了正則的lastIndex的值
    var reg07=/(w)(w)(w)/;
    var s1="bbs.baidu.cn";
    var result1=reg07.exec(s1);
    var result2=reg07.exec(s1);
    console.log(result1);// 如果沒(méi)加全局修飾符g,執(zhí)行多少次都一樣
    console.log(result2);//["bbs", "b", "b", "s", index: 0, input: "bbs.baidu.cn"]

    var reg08=/(w)(w)(w)/g;//需要手動(dòng)多次執(zhí)行 改變了正則的lastIndex的值
    var result3=reg08.exec(s1);
    var result4=reg08.exec(s1);
    console.log(result3);//["bbs", "b", "b", "s", index: 0, input: "bbs.baidu.cn"]
    console.log(result4);//["zhu", "z", "h", "u", index: 4, input: "bbs.baidu.cn"]

    //11.match 字符串類(lèi)方法  str.match(reg)
    //設(shè)置了全局修飾符g,會(huì)自動(dòng)進(jìn)行多次匹配,并把匹配到的結(jié)果放入到數(shù)組中,注意沒(méi)有index和input屬性
    //match在沒(méi)有分組的情況下能夠更快捷的把多次匹配到的內(nèi)容保存到數(shù)組中
    //exec正則類(lèi)方法 reg.exec(str)  注意 二者寫(xiě)法完全不一樣

    var reg09=/[bz]/;//不設(shè)置全局修飾符,結(jié)果和exec一樣
    var s3="bbs.baidu.cn";
    console.log(s3.match(reg09));//["b", index: 0, input: "bbs.baidu.cn"]

    var regg=/[bz]/g;//設(shè)置了全局修飾符,會(huì)自動(dòng)進(jìn)行多次匹配,并把匹配到的結(jié)果放入到數(shù)組中,注意沒(méi)有index和input屬性
    var res=s3.match(regg);
    console.log(res);//["b", "b", "z"]
    //12.replace(參數(shù)1:正則表達(dá)式 被替換的內(nèi)容,參數(shù)2:字符串/函數(shù) 用來(lái)替換第一個(gè)參數(shù)匹配到的內(nèi)容)
    //字符串方法 查找并替換  ,返回值 一個(gè)新的字符串
    //如果reg中有全局標(biāo)志g,那么將替換所有匹配到的子串,否則,它只替換第一個(gè)匹配子串
    //當(dāng)?shù)诙€(gè)參數(shù)不是字符串,是函數(shù)的時(shí)候,每次匹配都調(diào)用該函數(shù),將這個(gè)函數(shù)返回的字符串 作為替換文本使用,這個(gè)函數(shù)自定義替換規(guī)則
    //當(dāng)?shù)诙?shù)是函數(shù)時(shí),不僅自動(dòng)執(zhí)行此函數(shù),還要給這個(gè)函數(shù)傳3個(gè)參數(shù)
    //1.當(dāng)正則沒(méi)有分組時(shí),傳進(jìn)去的第一個(gè)實(shí)參是正則捕獲到的內(nèi)容,第二個(gè)參數(shù)是捕獲到的內(nèi)容在原字符串中的索引位置,第三個(gè)參數(shù)是原字符串
    //2.當(dāng)正則有分組的時(shí)候,第一個(gè)參數(shù)是大正則查找到的內(nèi)容,后面依次是子正則查找到的內(nèi)容
    //3.傳完查找到的內(nèi)容之后,再把總正則查找到的內(nèi)容在原字符串中的索引傳進(jìn),最后傳入原字符串
    var ostring="XaZZcUdFe";
    var oreg=/[a-z]/g;
    ostring=ostring.replace(oreg,function () {
      return arguments[0]+"("+arguments[1]+")";
    });
    console.log(ostring);// Xa(1)ZZc(4)Ud(6)Fe(8)
    //不加()小分組,arguments:[ 0:匹配到的字符,1:查找到的內(nèi)容在str中的索引,2:原字符串 ]
    var ostr="456a89b72cs";
    var oreg11=/(d)(d)/g;
    ostr=ostr.replace(oreg11,function () {
      return  Number(arguments[1])+Number(arguments[2]);
    });
    console.log(ostr);//96a17b9cs

    var astr="a1b2c3d4";
    var rr=/[a-z]/g;
    astr=astr.replace(rr,function (result,position,string) {
      return `在${position}的位置找到了${result},原字符串是${string};`;
    });
    console.log(astr);//在0的位置找到了a,原字符串是a1b2c3d4;
    // 在2的位置找到了b,原字符串是a1b2c3d4;2在4的位置找到了c,原字符串是a1b2c3d4;3在6的位置找到了d,原字符串是a1b2c3d4;4

str.search(reg)
str.split(reg,"")

未完待續(xù)。。。。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/107261.html

相關(guān)文章

  • JS基礎(chǔ)篇--正則表達(dá)式詳解

    摘要:下面整理一些常用的正則表達(dá)式。正則表達(dá)式中可以使用編碼。每個(gè)正則表達(dá)式可帶有一個(gè)或者多個(gè)標(biāo)注用以標(biāo)明正則表達(dá)式的行為。其中表示匹配項(xiàng)在字符串中的位置,而表示應(yīng)用字符串表達(dá)式的字符串。 正則表達(dá)式非常有用,查找、匹配、處理字符串、替換和轉(zhuǎn)換字符串,輸入輸出等。下面整理一些常用的正則表達(dá)式。 常用的正則字符 正則字符 描述 :將下一個(gè)字符標(biāo)記為一個(gè)特殊字符、或一個(gè)原義字符、或一個(gè) 向...

    shmily 評(píng)論0 收藏0
  • 【連載】前端個(gè)人文章整理-從基礎(chǔ)到入門(mén)

    摘要:個(gè)人前端文章整理從最開(kāi)始萌生寫(xiě)文章的想法,到著手開(kāi)始寫(xiě),再到現(xiàn)在已經(jīng)一年的時(shí)間了,由于工作比較忙,更新緩慢,后面還是會(huì)繼更新,現(xiàn)將已經(jīng)寫(xiě)好的文章整理一個(gè)目錄,方便更多的小伙伴去學(xué)習(xí)。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個(gè)人前端文章整理 從最開(kāi)始萌生寫(xiě)文章的想法,到著手...

    madthumb 評(píng)論0 收藏0
  • 前端文檔收集

    摘要:系列種優(yōu)化頁(yè)面加載速度的方法隨筆分類(lèi)中個(gè)最重要的技術(shù)點(diǎn)常用整理網(wǎng)頁(yè)性能管理詳解離線(xiàn)緩存簡(jiǎn)介系列編寫(xiě)高性能有趣的原生數(shù)組函數(shù)數(shù)據(jù)訪(fǎng)問(wèn)性能優(yōu)化方案實(shí)現(xiàn)的大排序算法一怪對(duì)象常用方法函數(shù)收集數(shù)組的操作面向?qū)ο蠛驮屠^承中關(guān)鍵詞的優(yōu)雅解釋淺談系列 H5系列 10種優(yōu)化頁(yè)面加載速度的方法 隨筆分類(lèi) - HTML5 HTML5中40個(gè)最重要的技術(shù)點(diǎn) 常用meta整理 網(wǎng)頁(yè)性能管理詳解 HTML5 ...

    jsbintask 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<