成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

JavaScript正則表達(dá)式進(jìn)階指南

xietao3 / 1577人閱讀

摘要:非貪婪匹配默認(rèn)情況下,正則表達(dá)式的量詞,都是進(jìn)行貪婪匹配,即匹配盡可能多的字符。參考正則表達(dá)式關(guān)于專(zhuān)注于微信小程序微信小游戲支付寶小程序和線(xiàn)上應(yīng)用實(shí)時(shí)監(jiān)控。自從年雙十一正式上線(xiàn),累計(jì)處理了億錯(cuò)誤事件,付費(fèi)客戶(hù)有金山軟件百姓網(wǎng)等眾多品牌企業(yè)。

摘要:正則表達(dá)式是程序員的必備技能,想不想多學(xué)幾招呢?

本文用JavaScript的exec方法來(lái)測(cè)試正則表達(dá)式。

例如,正則表達(dá)式/F.*g/會(huì)匹配“以F開(kāi)頭,以g結(jié)尾的字符串”,因此可以匹配"Hello, Fundebug!"中的Fundebug,exec方法會(huì)返回一個(gè)數(shù)組,其第一個(gè)元素為所匹配的子字符串。

/F.*g/.exec("Hello, Fundebug!")[0]
// "Fundebug"
非貪婪匹配

默認(rèn)情況下,正則表達(dá)式的量詞*、+、?、{},都是進(jìn)行貪婪匹配,即匹配盡可能多的字符。

例如,正則表達(dá)式/.+s/匹配的是“以空格符結(jié)尾的字符串”,我們用它來(lái)匹配蘋(píng)果公司創(chuàng)始人喬布斯在斯坦福大學(xué)演講的名言“You time is limited, so don’t waste it living someone else’s life.”:

/.+s/.exec("You time is limited, so don’t waste it living someone else’s life.")[0]
// "You time is limited, so don’t waste it living someone else’s "

.可以匹配任意字符,而+表示匹配1次或者多次,且是貪婪的,因此/.+s/匹配到了最后一個(gè)空格符才結(jié)束。

當(dāng)我們?cè)诹吭~*、+、?、{}后面緊跟著一個(gè)?,就可以實(shí)現(xiàn)非貪婪匹配,即匹配盡量少的字符。

例如,正則表達(dá)式/.+?s/匹配到第一個(gè)空格符就會(huì)結(jié)束:

/.+?s/.exec("You time is limited, so don’t waste it living someone else’s life.")[0]
// "You "
正向肯定查找

使用正則表達(dá)式x(?=y),可以匹配"x"僅僅當(dāng)"x"后面跟著"y"。這話(huà)有點(diǎn)繞,簡(jiǎn)單地說(shuō),就是匹配后面是y的x,這里的x和y都代表正則表達(dá)式。

例如,對(duì)于博客RabbitMQ入門(mén)教程的地址"https://blog.fundebug.com/2018/04/20/rabbitmq_tutorial/",如果需要匹配出域名fundebug的話(huà),可以使用/[a-z]+(?=.com)/,匹配“在.com前面的英文單詞”

/[a-z]+(?=.com)/.exec("https://blog.fundebug.com/2018/04/20/rabbitmq_tutorial/")[0]
// "fundebug"

廣告:歡迎免費(fèi)試用Fundebug,為您監(jiān)控線(xiàn)上代碼的BUG,提高用戶(hù)體驗(yàn)~

正向否定查找

與正向肯定查找所對(duì)應(yīng)的是正向否定查找,使用正則表達(dá)式x(?!y),可以"匹配"x"僅僅當(dāng)"x"后面不跟著"y""。

例如,小學(xué)生都知道的圓周率是3.1415926,不會(huì)的同學(xué)可以這樣記“山頂上有一座寺廟,寺廟里面有一壺酒,還有一塊肉”。如何匹配小數(shù)點(diǎn)后面的數(shù)字呢?可以使用/d+(?!.)/,匹配"后面沒(méi)有小數(shù)點(diǎn)的數(shù)字":

/d+(?!.)/.exec("3.1415926")[0]
// "1415926"

而使用之前提到的正向肯定查找,就可以匹配小數(shù)點(diǎn)前面的數(shù)字:

/d+(?=.)/.exec("3.1415926")[0]
// "3"
多行匹配

下面是鮑勃·迪倫的《Forever Young》歌詞:

May God bless and keep you always,
may your wishes all come true,
may you always do for others
and let others do for you.
may you build a ladder to the stars
and climb on every rung,
may you stay forever young,
forever young, forever young,
May you stay forever young.

如何匹配以forever開(kāi)頭的那句歌詞forever young, forever young呢?

這樣寫(xiě)/^forever.+/是錯(cuò)誤的:

/^forever.+/.exec("May God bless and keep you always,
may your wishes all come true,
may you always do for others
and let others do for you.
may you build a ladder to the stars
and climb on every rung,
may you stay forever young,
forever young, forever young,
May you stay forever young.")
// null

為什么錯(cuò)了?因?yàn)?strong>^匹配的整個(gè)字符串的開(kāi)始,而是不是每一行的開(kāi)始。

正則表達(dá)式指定m選項(xiàng),即可支持多行匹配,這時(shí)^$匹配的是每一行的開(kāi)始和結(jié)束,因此正確的正則表達(dá)式是/^forever.+/m

/^forever.+/m.exec("May God bless and keep you always,
may your wishes all come true,
may you always do for others
and let others do for you.
may you build a ladder to the stars
and climb on every rung,
may you stay forever young,
forever young, forever young,
May you stay forever young.")[0]
// "forever young, forever young,"
捕獲括號(hào)

在正則表達(dá)式中使用小括號(hào)(),可以提取出字符串中的特定子串。

例如,F(xiàn)undebug是在2016年雙11正式上線(xiàn)的,時(shí)間是"2016-11-11",如何提取其中的年、月、日呢?如下:

/(d{4})-(d{2})-(d{2})/.exec("2016-11-11")
// [ "2016-11-11", "2016", "11", "11", index: 0, input: "2016-11-11" ]

可知,3個(gè)小括號(hào)中的正則表達(dá)式分別匹配的是年月日,其結(jié)果依次為exec返回?cái)?shù)組中的1到3號(hào)元素。

參考

MDN:正則表達(dá)式

關(guān)于Fundebug

Fundebug專(zhuān)注于JavaScript、微信小程序、微信小游戲、支付寶小程序、React Native、Node.js和Java線(xiàn)上應(yīng)用實(shí)時(shí)BUG監(jiān)控。 自從2016年雙十一正式上線(xiàn),F(xiàn)undebug累計(jì)處理了10億+錯(cuò)誤事件,付費(fèi)客戶(hù)有Google、360、金山軟件、百姓網(wǎng)等眾多品牌企業(yè)。歡迎大家免費(fèi)試用!

版權(quán)聲明

轉(zhuǎn)載時(shí)請(qǐng)注明作者Fundebug以及本文地址:
https://blog.fundebug.com/2018/05/02/advanced_regular_expression/

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/94978.html

相關(guān)文章

  • 前端資源系列(4)-前端學(xué)習(xí)資源分享&前端面試資源匯總

    摘要:特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒(méi)想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯(cuò)誤的地方,還請(qǐng)斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會(huì)及時(shí)更新,平時(shí)業(yè)務(wù)工作時(shí)也會(huì)不定期更...

    princekin 評(píng)論0 收藏0
  • 前端資源分享-只為更好前端

    摘要:一團(tuán)隊(duì)組織網(wǎng)站說(shuō)明騰訊團(tuán)隊(duì)騰訊前端團(tuán)隊(duì),代表作品,致力于前端技術(shù)的研究騰訊社交用戶(hù)體驗(yàn)設(shè)計(jì),簡(jiǎn)稱(chēng),騰訊設(shè)計(jì)團(tuán)隊(duì)網(wǎng)站騰訊用戶(hù)研究與體驗(yàn)設(shè)計(jì)部百度前端研發(fā)部出品淘寶前端團(tuán)隊(duì)用技術(shù)為體驗(yàn)提供無(wú)限可能凹凸實(shí)驗(yàn)室京東用戶(hù)體驗(yàn)設(shè)計(jì)部出品奇舞團(tuán)奇虎旗下前 一、團(tuán)隊(duì)組織 網(wǎng)站 說(shuō)明 騰訊 AlloyTeam 團(tuán)隊(duì) 騰訊Web前端團(tuán)隊(duì),代表作品WebQQ,致力于前端技術(shù)的研究 ISUX 騰...

    zxhaaa 評(píng)論0 收藏0
  • 前端資源分享-只為更好前端

    摘要:一團(tuán)隊(duì)組織網(wǎng)站說(shuō)明騰訊團(tuán)隊(duì)騰訊前端團(tuán)隊(duì),代表作品,致力于前端技術(shù)的研究騰訊社交用戶(hù)體驗(yàn)設(shè)計(jì),簡(jiǎn)稱(chēng),騰訊設(shè)計(jì)團(tuán)隊(duì)網(wǎng)站騰訊用戶(hù)研究與體驗(yàn)設(shè)計(jì)部百度前端研發(fā)部出品淘寶前端團(tuán)隊(duì)用技術(shù)為體驗(yàn)提供無(wú)限可能凹凸實(shí)驗(yàn)室京東用戶(hù)體驗(yàn)設(shè)計(jì)部出品奇舞團(tuán)奇虎旗下前 一、團(tuán)隊(duì)組織 網(wǎng)站 說(shuō)明 騰訊 AlloyTeam 團(tuán)隊(duì) 騰訊Web前端團(tuán)隊(duì),代表作品WebQQ,致力于前端技術(shù)的研究 ISUX 騰...

    JouyPub 評(píng)論0 收藏0
  • 前端資源分享-只為更好前端

    摘要:一團(tuán)隊(duì)組織網(wǎng)站說(shuō)明騰訊團(tuán)隊(duì)騰訊前端團(tuán)隊(duì),代表作品,致力于前端技術(shù)的研究騰訊社交用戶(hù)體驗(yàn)設(shè)計(jì),簡(jiǎn)稱(chēng),騰訊設(shè)計(jì)團(tuán)隊(duì)網(wǎng)站騰訊用戶(hù)研究與體驗(yàn)設(shè)計(jì)部百度前端研發(fā)部出品淘寶前端團(tuán)隊(duì)用技術(shù)為體驗(yàn)提供無(wú)限可能凹凸實(shí)驗(yàn)室京東用戶(hù)體驗(yàn)設(shè)計(jì)部出品奇舞團(tuán)奇虎旗下前 一、團(tuán)隊(duì)組織 網(wǎng)站 說(shuō)明 騰訊 AlloyTeam 團(tuán)隊(duì) 騰訊Web前端團(tuán)隊(duì),代表作品WebQQ,致力于前端技術(shù)的研究 ISUX 騰...

    vslam 評(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)論

閱讀需要支付1元查看
<