国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

JS正則表達式要點分析

來源:懂視網 責編:小采 時間:2020-11-27 20:04:24
文檔

JS正則表達式要點分析

JS正則表達式要點分析:本文主要和大家分享JS正則表達式的要點,由于之前在看VueJS的源碼, 看到了HtmlParser部分, 感覺以前看的正則表達式基礎知識已經完全不夠用了, 現翻閱博客資料, 將一些JS中正則表達式難用的部分總結歸納, 方便自己和sf友翻閱.正則分組重復匹配對于重復的匹配,
推薦度:
導讀JS正則表達式要點分析:本文主要和大家分享JS正則表達式的要點,由于之前在看VueJS的源碼, 看到了HtmlParser部分, 感覺以前看的正則表達式基礎知識已經完全不夠用了, 現翻閱博客資料, 將一些JS中正則表達式難用的部分總結歸納, 方便自己和sf友翻閱.正則分組重復匹配對于重復的匹配,

后向引用(反向引用)

我們考慮一個很特殊的情況, 當我們要匹配四個IP段相同的情況, 如 100.100.100.100 時, 重復匹配分組的策略失效了: 重復匹配分組 并不能保證匹配相同的數字 -> 這時候我們需要借助 后向引用 策略的力量了(少年, 你渴望力量嗎2333, 戳我頭像, 帶你探索音樂與代碼交織的文藝道路.)

后向引用在不同語言的正則表達式書寫中, 有不同的語法, 我們討論JS中最常見的一種, 形如: \number 的后向引用, 其中, number 代表分組的序號.

給你一個簡單的栗子, 瞬間就記住了, 假使我們要匹配重復的三位數字, 我們將匹配一個數字的規則標記為一個分組: (\d), 重復匹配這個分組(第一個分組)的具體內容三次: (\d)\1, 這樣就達到了目的.

我們很容易將重復匹配和后向引用分別開來: 前者是重復匹配相同的規則, 后者是匹配分組的具體內容.

默認的一些規則需要稍加理解并記住:

  • \0代表的是, 整個正則表達式的匹配的內容

  • 正則斷言

    還記得我看過的一篇大概名為<30分鐘學會正則表達式>的文章中, 里面提及過正則斷言.
    當時感覺真是一看就懂. 但很遺憾, 實際生產中, 使用各種復雜正則表達式的情況實在是太少, 今天如果不翻閱百度, 我恐怕是不能記起斷言的分類和各種使用方法了.

    斷言的字面意思便是, 斷定(程序)運行到此時(結果)是這樣的"場景", 它描述的是一種 場景, 換句話說, 是一種"肯定的場景". 但要記住的是, 我們的"結果"是不包含在"場景"里面的.

    VueJS里頭需要匹配HTML tag, 我們就以匹配: '<segment>Not Fault</segment>' 中的 'Not Fault' 為例吧.

    我們如果使用普通的正則表達式, 如 /<segment>.*</segment>/ 會匹配到整個字符串 '<segment>Not Fault</segment>'. 我們使用斷言, 以"場景"的方式思考: '<segment>' 和 '</segment>' 是一種"肯定的場景", 我們需要匹配的結果是: 'Not Fault', 無論tag內部的字符無論如何變化, tag頭和tag尾都是不變的.

    一鼓作氣, 我們繼續往下

    先行斷言

    先行斷言, 我是這樣理解的: 先匹配內容, 再做"場景"假設.

    放到我們先前的栗子中, 便這樣匹配, 一直匹配內容, 直到碰上 '</segment>' 的場景, 語法如下: (?=</segment>)

    后發斷言

    后發斷言, 我的理解是: 先匹配場景, 再匹配內容.

    放到我們先前的栗子中, 先匹配 '<segment>' 的場景, 再繼續往下匹配內容, 語法如下: (?<=<segment>)

    實踐

    正則表達式是對字符串內容做匹配, 所以我將"先"和"后"的理解綁定到內容匹配的先后順序上, 方便理解.

    我們將先行斷言和后發斷言結合起來, 整個表達式如下: (?<=<segment>).*(?=</segment>), 我們便可獲得想要的結果: 'Not Fault' 了.

    "正負"斷言

    其實我們剛才做的是肯定的場景, 實際情況中還有"不滿足此場景"的使用場景.

    比如, 我們剛才使用的表達式: (?<=<segment>).*(?=</segment>) 是肯定有 '<segment>' '</segment>' 的場景下去匹配內容, 其實是使用的 "正后發斷言" 和 "正先行斷言", "正"即代表肯定的狀態.

    那負斷言, 也就是不滿足場景的斷言咯... 語法即把正斷言中的等于號換成感嘆號:

  • 負先行斷言 (?!)

  • 負后發斷言 (?<!)

  • 如: ['1999','2099','2199'...'9099'] 中如果我們要匹配除了'1999'以外的所有帶有'99'結尾的年份, 我們可以使用表達式: (?<!19)99

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    JS正則表達式要點分析

    JS正則表達式要點分析:本文主要和大家分享JS正則表達式的要點,由于之前在看VueJS的源碼, 看到了HtmlParser部分, 感覺以前看的正則表達式基礎知識已經完全不夠用了, 現翻閱博客資料, 將一些JS中正則表達式難用的部分總結歸納, 方便自己和sf友翻閱.正則分組重復匹配對于重復的匹配,
    推薦度:
    標簽: js 解析 分析
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 最新中文字幕第一页 | 亚洲第八页 | 亚洲午夜一区二区三区 | 男女激情网址 | 国产亚洲一欧美一区二区三区 | 国产区网址| 国产成人久久精品亚洲小说 | 美女洗澡一级毛片 | 91久久国产综合精品女同我 | 亚洲欧洲日产国码一级毛片 | 久久综合中文字幕一区二区 | 国产一级理论免费版 | 熟年中出交尾六十路七十路 | 欧美一级爱操视频 | 欧美精品免费在线 | 亚洲一区二区三区久久久久 | 精品一区二区久久久久久久网精 | 一区二区电影 | 午夜国产电影 | 国产精品成人一区二区1 | 黄色一级视频免费观看 | 国产三级在线免费 | 国产欧美日本在线 | 亚洲好骚综合 | 中文字幕欧美在线 | 日本vs欧美一区二区三区 | 日韩欧美一区在线观看 | 岛国一区 | 国产欧美视频在线观看 | 欧美日韩亚洲区久久综合 | 日本欧美在线 | 国产成人一区二区三区视频免费蜜 | 亚欧成人毛片一区二区三区四区 | 全黄网站| 国产日韩欧美视频 | 欧美日一区二区三区 | 中文字幕一区二区三区四区 | 精品久久久久久综合日本 | 日韩视频在线观看一区二区 | 国产男女无遮挡猛进猛出 | 国产成人99久久亚洲综合精品 |