国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

通過(guò)實(shí)例學(xué)習(xí)正則表達(dá)式

NervosNetwork / 1302人閱讀

摘要:在正則表達(dá)式中被稱(chēng)為元字符,它可以匹配除回車(chē)換行行分隔符和段分隔符以外的所有字符。點(diǎn)擊查看其他元字符。想要實(shí)際查看兩種模式的區(qū)別,可以將上方匹配的正則表達(dá)式的去掉再執(zhí)行,看看返回結(jié)果有何不同。

判斷郵箱是否正確 郵箱正則
/w+[w.]*@[w.]+.w+/
測(cè)試用例
const regex = /w+[w.]*@[w.]+.w+/

regex.test("666@email.com")            // true
regex.test("july@e.c")                 // true               
regex.test("_@email.com.cn")           // true
regex.test("july_1234@email.com")      // true

regex.test("@email.com")               // false
regex.test("julyemail.com")            // false
regex.test("july.email.com")           // false
regex.test("july@")                    // false
regex.test("july@email")               // false
regex.test("july@email.")              // false
regex.test("july@.")                   // false
regex.test("july@.com")                // false
regex.test("-~!#$%@email.com")         // false
正則講解

w。 w屬于一種預(yù)定義模式,表示匹配任意的字母、數(shù)字和下劃線(xiàn)。點(diǎn)擊查看其他預(yù)定義模式。

+、*。 +、*和?在正則表達(dá)式中被稱(chēng)為量詞符。+表示一次或多次,*表示0次或多次,?表示0次或一次。

. 。 . 在正則表達(dá)式中被稱(chēng)為元字符,它可以匹配除回車(chē)( )、換行( ) 、行分隔符(u2028)和段分隔符(u2029)以外的所有字符。因?yàn)樵址刑厥夂x,所以如果要匹配元字符本身,就需要使用轉(zhuǎn)義字符,也就是在前面加上反斜杠 ( )。點(diǎn)擊查看其他元字符

[w.]。 [ ] 表示一個(gè)字符集合,比如 [ july ] 不是表示匹配整個(gè)單詞,而是表示j、u、l和y組成的一個(gè)字符集合,匹配時(shí)只要匹配到其中一個(gè)字母就表示匹配成功。點(diǎn)擊查看字符集合詳解

總覽

匹配URL地址 URL正則
/https?://(w*:w*@)?[-w.]+(:d+)?(/([w/.]*(?S+)?)?)?/
測(cè)試用例
const regex = /https?://(w*:w*@)?[-w.]+(:d+)?(/([w/.]*(?S+)?)?)?/

regex.test("http://www.forta.com/blog")                    // true
regex.test("https://www.forta.com:80/blog/index.cfm")      // true
regex.test("https://www.forta.com")                        // true
regex.test("http://ben:password@www.forta.com/")           // true
regex.test("http://localhost/index.php?ab=1&c=2")          // true
regex.test("http://localhost:8500/")                       // true
正則講解

( ) 。類(lèi)似于( w:w*@ )這樣的表達(dá)式被稱(chēng)為子表達(dá)式,相比于字符集合[ ]匹配時(shí)只匹配集合中的一個(gè)字符,子表達(dá)式是將括號(hào)內(nèi)的表達(dá)式作為一個(gè)整體來(lái)匹配。比如 ( :d+ )匹配類(lèi)似于 “:8080” 這樣的字符串,而 [ :d ] 匹配一個(gè) : 或者一個(gè) 數(shù)字。

總覽

練習(xí) 去掉html文件中的所有注釋 html文件

我在本地隨便寫(xiě)了一個(gè)html文件,包含css、html和js3個(gè)部分,是一個(gè)完整的網(wǎng)頁(yè)。





  
  
  
  Document
  



  

h1 title

h2 title

匹配
const htmlStr = `html字符串`;   // 將上面的html內(nèi)容拷貝于此,由于太長(zhǎng),就不再拷貝

// 匹配 /* */
htmlStr.match(//*[^]*?*//g);  // 該行代碼會(huì)返回一個(gè)數(shù)組,長(zhǎng)度為10,數(shù)組的每個(gè)元素分別對(duì)應(yīng)匹配到的 /* */,由于篇幅有限,就不將結(jié)果展示到這里了

// 匹配 
htmlStr.match(//g);

// 匹配 //
htmlStr.match(/(//.*?(?=([""]s*w+s*=)|([""]s*>)))|(//.*)/g);
分析

g全局修飾符。g是正則表達(dá)式的修飾符,表示全局匹配或者搜索,因?yàn)閔tml中會(huì)有多個(gè)注釋?zhuān)孕枰中揎椃c(diǎn)擊查看全部修飾符)。

[^]。^被稱(chēng)為脫字符,我的理解就是取反的意思,比如[ ^abc ]表示除了a、b和c,其他所有字符都可以匹配。[^]匹配任意字符,包括換行符。

非貪婪模式。量詞符在默認(rèn)情況下都是使用貪婪模式進(jìn)行匹配,比如說(shuō)上面的[^]*表示匹配0個(gè)或多個(gè)任意字符,由于是貪婪模式,所以會(huì)盡可能多的匹配任意字符,直到不滿(mǎn)足條件為止。通過(guò)在[^]*后面加一個(gè)?號(hào),就變成了非貪婪模式,這種模式下,一旦條件滿(mǎn)足,就不會(huì)再往下匹配。想要實(shí)際查看兩種模式的區(qū)別,可以將上方匹配 /* */的正則表達(dá)式的?去掉再執(zhí)行,看看返回結(jié)果有何不同。

向前查找。向前查找就是一個(gè)以?=開(kāi)頭的子表達(dá)式。舉例說(shuō)明其意義,比如我們要匹配出URL的協(xié)議部分,URL:https://www.forta.com,正則:/.+(?=:)/,(?=:)就是一個(gè)向前查找,它表示只要匹配到:,就把:之前的內(nèi)容返回,:本身不需要返回。

前面兩種注釋的匹配比較容易,第三種也就是//這種注釋比較復(fù)雜。其實(shí)對(duì)于//注釋?zhuān)诮^大多數(shù)情況下///.*/這個(gè)正則可以匹配出,但是有兩種情況不能滿(mǎn)足,見(jiàn)下方代碼


    

我們通過(guò)圖片詳細(xì)解析一下

最終代碼

為了方便,最終代碼選擇在node環(huán)境中執(zhí)行,因?yàn)樽畛醯男枨笫菍tml中的所有注釋去掉,所以我們使用了字符串的replace方法,該方法接收兩個(gè)參數(shù),第一個(gè)參數(shù)是正則表達(dá)式,第二個(gè)參數(shù)是需要替換成的內(nèi)容。

const fs = require("fs");

// regex.html 是放在同級(jí)目錄下的html源文件
fs.readFile("./regex.html", "utf8", (err, data) => {
  if (err) throw err;

  console.log(
    data
      .replace(//*[^]*?*//g, "")    // 替換 /* */
      .replace(//g, "")     // 替換 
      .replace(/(//.*?(?=([""]s*w+s*=)|([""]s*>)))|(//.*)/g, "")  // 替換 // 
  );
});
參考資料

《正則表達(dá)式必知必會(huì)》
阮一峰javascript教程

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

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

相關(guān)文章

  • 60分鐘正則從入門(mén)到深入

    摘要:正則表達(dá)式使用單個(gè)字符串來(lái)描述匹配一系列匹配某個(gè)句法規(guī)則的字符串。接下來(lái),是在手機(jī)正則里面已經(jīng)出現(xiàn)了。序列匹配而則匹配。分組與反向引用分組,又稱(chēng)為子表達(dá)式。把正則表達(dá)式拆分成小表達(dá)式。 本文轉(zhuǎn)載自網(wǎng)絡(luò)。轉(zhuǎn)載編輯過(guò)程中,可能有遺漏或錯(cuò)誤,請(qǐng)以原文為準(zhǔn)。原文作者:水墨寒湘原文鏈接:https://juejin.im/post/582dfc... 正則表達(dá)式對(duì)于我來(lái)說(shuō)一直像黑暗魔法一樣的存...

    _ang 評(píng)論0 收藏0
  • 正則系列——JavaScript正則達(dá)式基礎(chǔ)語(yǔ)法鞏固篇

    摘要:基礎(chǔ)語(yǔ)法鞏固正則表達(dá)式引擎根據(jù)正則去匹配字符的時(shí)候,是通過(guò)檢查索引的方式。妻原配就是好,可以直接使用正則表達(dá)式調(diào)用它。下面解釋一下上面這些常用的元字符查找單個(gè)字符,除了換行和行結(jié)束符。正則系列文章整理到了 上一章內(nèi)容:正則表達(dá)式實(shí)戰(zhàn)篇 知識(shí)回顧 前2章分別學(xué)習(xí)了正則表達(dá)式入門(mén)技巧,以及遇到正則需求該如何去分析問(wèn)題,還有正則表達(dá)式實(shí)戰(zhàn)的一些場(chǎng)景解釋。 這一章內(nèi)容偏向理論,推薦你點(diǎn)擊開(kāi)頭的...

    phodal 評(píng)論0 收藏0
  • 正則達(dá)式

    摘要:最全正則表達(dá)式總結(jié)驗(yàn)證號(hào)手機(jī)號(hào)中文郵編身份證地址等是正則表達(dá)式的縮寫(xiě),作用是對(duì)字符串執(zhí)行模式匹配。學(xué)習(xí)目標(biāo)了解正則表達(dá)式語(yǔ)法在中使用正則表達(dá)式在中使 JS高級(jí)技巧 本篇是看的《JS高級(jí)程序設(shè)計(jì)》第23章《高級(jí)技巧》做的讀書(shū)分享。本篇按照書(shū)里的思路根據(jù)自己的理解和經(jīng)驗(yàn),進(jìn)行擴(kuò)展延伸,同時(shí)指出書(shū)里的一些問(wèn)題。將會(huì)討論安全的類(lèi)型檢測(cè)、惰性載入函數(shù)、凍結(jié)對(duì)象、定時(shí)器等話(huà)題。1. 安全的類(lèi)型檢測(cè)...

    yibinnn 評(píng)論0 收藏0
  • 簡(jiǎn)單學(xué)習(xí) JavaScript 正則達(dá)式

    摘要:對(duì)于對(duì)象,方法返回一個(gè)該正則表達(dá)式的字面量。顯示顯示正則表達(dá)式在的應(yīng)用一個(gè)在字符串中執(zhí)行查找匹配的方法,它返回一個(gè)數(shù)組或者在未匹配到時(shí)返回。 為什么要用正則表達(dá)式 簡(jiǎn)單的說(shuō):我們與字符串接觸的頻率非常之高,正則表達(dá)式可以極大的提高復(fù)雜文本分析的效率,快速匹配出復(fù)雜的字符串。 創(chuàng)建一個(gè)正則表達(dá)式 直接量語(yǔ)法(字面量) var expression = /pattern/flags ;...

    nevermind 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<