• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答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
    主站蜘蛛池模板: 国产高清精品一区| 精品国产一区AV天美传媒| 日韩精品无码熟人妻视频| 国产69精品久久久久9999| 国产精品多人p群无码| 亚洲午夜精品久久久久久app| 91麻豆精品一二三区在线| 1000部精品久久久久久久久 | 一区二区精品在线| 2021国产成人精品国产| 亚洲国产一二三精品无码| 久久99精品久久久久久不卡| 91麻豆精品国产91久久久久久| 99精品在线播放| 国产精品丝袜黑色高跟鞋| 日产精品久久久一区二区| 合区精品中文字幕| 久久久久99精品成人片| 国内精品久久久久久久久电影网| 四虎精品成人免费观看| 久久er热视频在这里精品| 成人久久精品一区二区三区| 国产美女久久精品香蕉69| 久久亚洲中文字幕精品有坂深雪| 自拍偷在线精品自拍偷| 无码国模国产在线无码精品国产自在久国产| 国产精品美女久久久免费| 99久久精品国产综合一区| 一区二区三区精品国产欧美| 色花堂国产精品第一页| 久久精品一区二区三区不卡| 精品999在线| 欧美一区二区精品系列在线观看| 国产精品久久久久无码av| 国产精品夜色一区二区三区| 国内精品久久九九国产精品| 国内精品手机在线观看视频| 欧美大片日韩精品| 国产99久久久国产精品~~牛| 国产精品JIZZ在线观看老狼| 国产精品午夜国产小视频|