正則

正則方法

    search() 方法 用于檢索字符串中指定的子字符串酥泞,或檢索與正則表達(dá)式相匹配的子字符串债蜜,并返回子串的起始位置娇唯。
    replace() 方法 用于在字符串中用一些字符替換另一些字符赞庶,或替換一個與正則表達(dá)式匹配的子串霎槐。
    test() 方法用于檢測一個字符串是否匹配某個模式宦焦,如果字符串中含有匹配的文本须妻,則返回 true埂伦,否則返回 false煞额。
    exec() 方法用于檢索字符串中的正則表達(dá)式的匹配。該函數(shù)返回一個數(shù)組,其中存放匹配的結(jié)果立镶。如果未找到匹配壁袄,則返回值為 null。
    split() 用來把一個字符串拆分為多個子串的String方法媚媒。
    match() 用來匹配一個字符串的String方法嗜逻。

正則規(guī)則

  • 通常情況下正則會返回第一個匹配結(jié)果
        g   (意思是'global',全局), 返回一個包含所有匹配結(jié)果的數(shù)組 
    
  • 通常情況下正則匹配區(qū)分大小寫
        i   強制執(zhí)行一次不區(qū)分大小寫搜索
    
  • 英文.
        .   (英文句號),可以匹配任何一個單個字符、字母缭召、數(shù)字栈顷、或者.本身。除了\符嵌巷。
            可以連續(xù)出現(xiàn),也可以以間隔形式出現(xiàn)萄凤。 
    
  • 元字符
        \   (轉(zhuǎn)移符號)  這個符號有特殊含義,并不是字符本身的含義。
            [和] (匹配的字符集合)   只負(fù)責(zé)定義字符集合,字符集合的匹配結(jié)果是能夠與該集合里的任意一個成員相匹配的文本搪哪。  
    
  • -(連字符)
        -   [0-9] [a-z] [A-Z]
            不能[3-1]這樣寫
            只有寫在[和]里表示連接符,寫下其他地方只表示普通字符,所以不用轉(zhuǎn)義靡努。 
    
  • 取非匹配[^]
        [^]     除去[]里匹配的字符 
        [^0-9]  匹配任何不是數(shù)字的字符
    
  • 空白字符串
        [\b]    回退(并刪除)一個字符
        \f      換頁符
        \n      換行符
        \r      回車符
        \t      制表符(Tab鍵)
        \v      垂直制表符
    
  • 字符類
        \d  任何一個數(shù)字字符
        \D  任何一個非數(shù)字字符
        \w  任何一個字母數(shù)字字符或下劃線字符
        \W  任何一個非字母數(shù)字字符或下劃線字符
        \s  任何一個空白字符
        \S  任何一個非空白字符
    
  • 匹配進(jìn)制
        \x  十六進(jìn)制前綴,\x0A對應(yīng)ASCII字符10(換行符),與\n一樣
        \0  八進(jìn)制前綴,\011對應(yīng)于ASCII字符9(制表符),與\t一樣
    

重復(fù)匹配

  • [+ ,* ,? ,]
        +   匹配一個或多個字符。
        [0-9+]  表示匹配0-9之間的數(shù)組和+號字符晓折。
    
        *   匹配零個或多個字符惑朦。
    
        ?   只能匹配一個字符(或字符處理)的零次或一次出現(xiàn),只匹配前面的字符。
    
        {和}    可以設(shè)定重復(fù)次數(shù)漓概⊙拢可以是重復(fù)的值,也可以是一個區(qū)間胃珍。
                {3}     剛好重復(fù)三次梁肿。
                {2,4}   重復(fù)2-4次。
                {2,}   至少重復(fù)兩次觅彰。
    

貪婪型元字符和對應(yīng)的懶惰型

  • 貪婪型元字符 匹配的越多越好

  • 對應(yīng)的懶惰型 只匹配一個,適可而止

    貪婪型元字符 懶惰型元字符
    * *?
    + +?
    {n,} {n,}?

位置匹配

  • 單詞邊界
        \b  用來匹配一個單詞的開始或結(jié)尾,它匹配的位置是\w和\W之間的位置吩蔑。
        \B  不匹配一個單詞邊界。
    
  • 字符串邊界
        ^   字符串開頭
        $   字符串結(jié)尾
    

子表達(dá)式

  • (和)
        (和)    會被視為獨立的元素
        (19|20) 19或20,|會把前后的看做一個整體
    

回溯引用

  • JS里使用\來標(biāo)識回溯引用(\與$配合進(jìn)行替換操作時例外)

        回溯引用指的是模式的后半部分引用在前半部分中定義的子表達(dá)式
    
        [ ]+(\w+)[ ]+\1     \1的內(nèi)容與(\w+)的一樣
    
    -   回溯引用只能用來引用模式里的子表達(dá)式(用(和)闊起來的正則表達(dá)式)
    -   回溯引用匹配通常從1開始計數(shù)(如\1缔莲、\2,等等)哥纫。\0可以用來代表整個正則表達(dá)式霉旗。
    -   回溯引用也有不足之處,添加或刪除子表達(dá)式,會使子表達(dá)式的相對位置改變痴奏。
    
  • 回溯中的替換操作

        $   $0代表整個正則匹配的
    
  • 大小寫轉(zhuǎn)換的元字符

    js好像沒用

    元字符 說明
    \E 結(jié)束\L或\U轉(zhuǎn)換
    \l 把下一個字符轉(zhuǎn)換成小寫
    \L 把\L到\E之間的字符全部轉(zhuǎn)換為小寫
    \u 把下一個字符轉(zhuǎn)換為大寫
    \U 把\U到\E之間的字符全部轉(zhuǎn)換為大寫
        var str = "<h1>abc</h1>"
        str1 = str.replace(/\<h1\>(.*?)\<\/h1\>/g,function(){
            let arr = [...arguments]
            console.log(arr);
            return arr[1].toUpperCase()
        });
        console.log(str1);
    

前后查找

  • 向前查找(向左查找)
        ?=  以?=開頭的子表達(dá)式,需要匹配的文本跟在=的后面。
            會返回結(jié)果,只是這個結(jié)果的字節(jié)長度永遠(yuǎn)是0厌秒。
            長度是可變的读拆。
    
  • 向后查找
        ?<= 可以把<=看做箭頭,他指向文本閱讀方向的后方。
            只是固定長度鸵闪。
    

  • 查找操作符

    操作符符 說 明
    (?=) 正向前查找
    (?!) 負(fù)向前查找
    (?<=) 正向后查找
    (?<!) 負(fù)向后查找
        支持向前查找的檐晕,一般都支持正向前查找和負(fù)向前查找。向后查找也是如此。
        負(fù)向查找實際上是取非的作用辟灰。
        (?=\$)\d    以$開頭的數(shù)字
        (?!\$)\d    不以$開頭的數(shù)字
    
  • 非捕獲性分組匹配

        ?:  非捕獲性分組工作模式下分組(?:)會作為匹配校驗个榕,并出現(xiàn)在匹配結(jié)果字符里面,但不作為子匹配返回芥喇。
    
        捕獲性分組:會返回結(jié)果以及其他子表達(dá)式所匹配的結(jié)果集合
        非捕獲性分組:返回結(jié)果以及子表達(dá)式里沒有?:的結(jié)果集合
    

    例:

        var str1 = '000aaa111';  
        var pattern = /([a-z]+)(\d+)/;       // 捕獲性分組匹配
        var pattern2 = /(?:[a-z]+)(?:\d+)/;  // 非捕獲性分組匹配
    
        console.log(pattern.exec(str1))     // 捕獲性分組匹配結(jié)果    ['aaa111','aaa','111']
        console.log(pattern2.exec(str1))    // 非捕獲性分組匹配結(jié)果  ['aaa111']
    

插入條件

  • 回溯引用條件

    回溯引用條件只在一個前面的子表達(dá)式搜索成功的情況下才允許使用一個表達(dá)式西采。

        ?(1)    1代表第幾個子表達(dá)式(第幾個括號),0代表整個正則表達(dá)式
    
        var reg = /(<[Aa]\s*[^>]*>)(?(1)\s*<\/[Aa]>)/;
        只有第一個括號里有匹配結(jié)果,即?(1)有值,才會繼續(xù)它后面的匹配
    
  • 前后查找條件

    前后查找條件只有一個向前查找或向后查找取得成功的情況下才允許一個表達(dá)式被使用继控。

        ?(?=)   ()里放入前后查找表達(dá)式,當(dāng)前后查找表達(dá)式匹配到才繼續(xù)匹配械馆。
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市武通,隨后出現(xiàn)的幾起案子霹崎,更是在濱河造成了極大的恐慌,老刑警劉巖冶忱,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尾菇,死亡現(xiàn)場離奇詭異,居然都是意外死亡囚枪,警方通過查閱死者的電腦和手機错沽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來眶拉,“玉大人千埃,你說我怎么就攤上這事∫渲玻” “怎么了放可?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長朝刊。 經(jīng)常有香客問我耀里,道長,這世上最難降的妖魔是什么拾氓? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任冯挎,我火速辦了婚禮,結(jié)果婚禮上咙鞍,老公的妹妹穿的比我還像新娘房官。我一直安慰自己,他們只是感情好续滋,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布翰守。 她就那樣靜靜地躺著,像睡著了一般疲酌。 火紅的嫁衣襯著肌膚如雪蜡峰。 梳的紋絲不亂的頭發(fā)上了袁,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音湿颅,去河邊找鬼载绿。 笑死,一個胖子當(dāng)著我的面吹牛油航,可吹牛的內(nèi)容都是我干的卢鹦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼劝堪,長吁一口氣:“原來是場噩夢啊……” “哼冀自!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起秒啦,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤熬粗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后余境,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體驻呐,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年芳来,在試婚紗的時候發(fā)現(xiàn)自己被綠了含末。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡即舌,死狀恐怖佣盒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情顽聂,我是刑警寧澤肥惭,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站紊搪,受9級特大地震影響蜜葱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜耀石,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一牵囤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧滞伟,春花似錦揭鳞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鉴裹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背径荔。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工督禽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人总处。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓狈惫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鹦马。 傳聞我的和親對象是個殘疾皇子胧谈,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354