<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          有了這個庫,寫正則表達式就像說話一樣簡單

          共 1290字,需瀏覽 3分鐘

           ·

          2020-08-20 03:24

          正則表達式的確是一個強大的工具,但是它那天書一般晦澀難懂的語法,讓大部分初學者望而生畏。

          第一次接觸時,你是不是跟小朋友一樣有很多問號?


          即便是有經(jīng)驗的程序員,回頭看自己幾個月前寫的正則表達式,也有可能懷疑人生:這什么玩意兒?

          迷之代碼

          除了語法難懂以外,還有一個痛點,就是直接寫出來的正則表達式是靜態(tài)的,想要定義動態(tài)的規(guī)則也不太方便。

          天下苦正則久矣,誰能振臂一呼,解救萬千碼農(nóng)?別方,困擾程序員多年的正則恐懼癥,可能有救了!

          主角就是今天要介紹的一個 JavaScript 庫:SuperExpressive。正如它的名字,它是通過表達性的自然語言來描述正則表達式。這個庫沒有其他額外的依賴,體積輕量,gzip 壓縮后不到 3 Kb!

          Super Expressive

          SuperExpressive 通過可編程的方式,利用人類可讀的語言構(gòu)建正則表達式。它的 API 采用鏈式調(diào)用的設(shè)計,并且是不可變的(immutable)。它有以下幾個特點:

          1. 屬性和方法描述了要做的事情

          2. 調(diào)用順序很重要,比如量詞要寫在目標對象之前:SuperExpressive().exactly(5).digit

          3. 出錯了也很容易發(fā)現(xiàn),如果表達式無效,它會提示你如何修正

          安裝使用

          npm?i?super-expressive
          const?SuperExpressive?=?require('super-expressive');

          示例

          下面是一個官方的例子,演示如何匹配十六進制形式的字符串,比如0xC0D3。

          const?SuperExpressive?=?require('super-expressive');

          const?myRegex?=?SuperExpressive()
          ??.startOfInput
          ??.optional.string('0x')
          ??.capture
          ????.exactly(4).anyOf
          ??????.range('A',?'F')
          ??????.range('a',?'f')
          ??????.range('0',?'9')
          ????.end()
          ??.end()
          ??.endOfInput
          ??.toRegex();

          //?生成的正則表達式如下:
          /^(?:0x)?([A-Fa-f0-9]{4})$/

          怎么樣?從上往下看,是不是跟人類自然語言類似(只不過是英語),用屬性和方法描述了具體規(guī)則和行為。詳細的 API 可以參考它的 Github 倉庫
          )。正則里各種特性,比如多行、全局匹配、元字符等,基本都有對應(yīng)的屬性和方法。

          當然,要想無障礙地使用這個庫,還是需要對正則的基本概念有所了解。它的作用,只不過是把抽象的正則語法用更具表達性的自然語言來代替,方便開發(fā)者閱讀和維護。

          如果覺得有用,趕快分享給你的小伙伴們吧!

          順手點“在看”,每天早下班;轉(zhuǎn)發(fā)加關(guān)注,共奔小康路~


          瀏覽 36
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人性爱网站免费 | 婷婷五月综合在线 | 中文字幕成人免费视频 | 黄色录像网址 | 欧美区亚洲区 |