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

資訊專欄INFORMATION COLUMN

Javascript正則匹配不含某子串

huaixiaoz / 2907人閱讀

摘要:在中就體現(xiàn)成用正則表達(dá)式進(jìn)行文件名匹配。字符串匹配恩,那么不包括呢顯然,這就需要用到正則的位置匹配了和都是不正確的,匹配前面不是的的位置。參考正則表達(dá)式分鐘入門教程正則表達(dá)式匹配不包含某個(gè)字符串通俗易懂還有圖

問題重現(xiàn)

不知道各位旁友在webpack的使用中,有沒有碰到下面的問題情景:

在使用了css Module的情況下,同時(shí)又希望用一些global的布局,其實(shí)在css Module中直接用

:global(.title) {
    color: green;
}

也是可以實(shí)現(xiàn)的,但是如果需要引入第三方css,如Animate.css,如果對每一個(gè)classname都進(jìn)行手動(dòng)的全局定義,工作量可不小。

關(guān)于css的打包問題,對于一些組件的樣式,可以將css打包在js文件中,但是一些全局的css,或者一些需要第一時(shí)間加載的css (如pace.css,在頁面加載過程中就需要第一時(shí)間解析出樣式),就需要使用ExtractTextPlugin打包成為多帶帶的css文件了。

以上都是需要對于同一類型文件的不同處理。在webpack中就體現(xiàn)成用正則表達(dá)式進(jìn)行文件名匹配。

為了更優(yōu)雅的命名,第一種情景來舉例,我將全局的樣式文件命名成foo.global.less,其他需要進(jìn)行css module處理的則正常命名,如bar.less

思路

在進(jìn)入主題之前,我先分享一個(gè)實(shí)用的在線正則網(wǎng)站refiddle,包含了不僅僅Javascript的正則

下面的重頭戲便是
如何正則匹配*.global.less*.less(不包括*.global.less)?

眾所周知,webpack中是不存在多次正則匹配的,所以需要分別使用2個(gè)正則表達(dá)式來解決上面兩種字符串的匹配。

*.global.less字符串匹配?恩, so easy,/.global.less$/, 那么*.less(不包括*.global.less)呢?

顯然,這就需要用到正則的位置匹配了((^.global)[^.global]都是不正確的),匹配前面不是.global的的位置。

分類 語法 說明
捕獲 (exp) 匹配exp,并捕獲文本到自動(dòng)命名的組里
捕獲 (?exp) 匹配exp,并捕獲文本到名稱為name的組里,也可以寫成(?"name"exp)
捕獲 (?:exp) 匹配exp,不捕獲匹配的文本,也不給此分組分配組號
位置匹配 (?=exp) 匹配exp前面的位置
位置匹配 (?<=exp) 匹配exp后面的位置
位置匹配 (?!exp) 匹配后面跟的不是exp的位置
位置匹配 (? 匹配前面不是exp的位置
注釋 (?#comment) 這種類型的分組不對正則表達(dá)式的處理產(chǎn)生任何影響,用于提供注釋讓人閱讀

如上表,很顯然需要使用(?,所以正則表達(dá)式是/(?,完結(jié)撒花!

但是!真的就這樣可以了嗎??很不幸的是在js中并沒有實(shí)現(xiàn)(?<=exp)(?的位置匹配。(可能是大家伙都沒想到Js能走到今天這個(gè)地步,以為只是在瀏覽器上耍耍,數(shù)據(jù)驗(yàn)證沒必要太復(fù)雜吧, ? )
參看RegExp.

經(jīng)過一番查找和頭腦風(fēng)暴,最終得到了Js中不包含某子串的正則匹配
/^(.(?!.global))+.less$/

(?!.global)匹配的是后面不是.global的位置
(.(?!.global))+匹配的就是若干個(gè)后面跟著不是.global的字符
^字符串首位置不能丟!,如果丟了,/(.(?!.global))+.less$/也能夠匹配foo.global.less,因?yàn)閺?b>foo
后面的.開始,后面跟著的就不是.global了。

但是對于.global.less字符串,該正則也無能為力了。

參考

正則表達(dá)式30分鐘入門教程

JavaScript RegExp

正則表達(dá)式匹配“不包含某個(gè)字符串” (通俗易懂還有圖!)

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

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

相關(guān)文章

  • 正則表達(dá)式JavaScript版本回顧筆記

    摘要:以指定模式分割字符串,返回結(jié)果為數(shù)組。為什么牢記,有什么用看代碼查找連續(xù)的相同的數(shù)字或者內(nèi)容是用子表達(dá)式只有字表達(dá)是中匹配的內(nèi)容才保存到緩存,這種行為叫捕獲。 前言 正則表達(dá)式之所以強(qiáng)大,是因?yàn)槠淠軐?shí)現(xiàn)模糊匹配,精確匹配沒有任何價(jià)值。 正則表達(dá)式學(xué)習(xí)筆記 第一章 JavaScript原型對象與原型鏈 1.1 正則表達(dá)式概念 RegExp:是正則表達(dá)式(regular expressio...

    tigerZH 評論0 收藏0
  • 正則表達(dá)式JavaScript版本回顧筆記背誦版本

    摘要:以指定模式分割字符串,返回結(jié)果為數(shù)組。為什么牢記,有什么用看代碼查找連續(xù)的相同的數(shù)字或者內(nèi)容是用子表達(dá)式只有字表達(dá)是中匹配的內(nèi)容才保存到緩存,這種行為叫捕獲。 前言 正則表達(dá)式之所以強(qiáng)大,是因?yàn)槠淠軐?shí)現(xiàn)模糊匹配,精確匹配沒有任何價(jià)值。 正則表達(dá)式學(xué)習(xí)筆記 第一章 JavaScript原型對象與原型鏈 1.1 正則表達(dá)式概念 RegExp:是正則表達(dá)式(regular expressio...

    CoXie 評論0 收藏0
  • JavaScript字符串操作方法大全,包含ES6方法

    摘要:要執(zhí)行忽略大小寫的檢索,請追加標(biāo)志。八提取字符串的片斷,并在新的字符串中返回被提取的部分。九把字符串分割為字符串?dāng)?shù)組。十一把字符串轉(zhuǎn)換為大寫。十四從起始索引號提取字符串中指定數(shù)目的字符。。子串中的字符數(shù)。新增的操作字符串的方法一 一、charAt() 返回在指定位置的字符。 var str=abc console.log(str.charAt(0))//a 二、charCodeAt(...

    Scorpion 評論0 收藏0
  • 深入理解ES6筆記(二)字符串和正則表達(dá)

    摘要:主要知識(shí)點(diǎn)新增的字符串處理方法模板字面量以及正則表達(dá)式上的改動(dòng)深入理解筆記目錄字符串字符串是大原始數(shù)據(jù)類型。如果在字符串的結(jié)束部分檢測到指定文本,返回,否則返回。字符串內(nèi)插入反撇號的方式。 主要知識(shí)點(diǎn):新增的字符串處理方法、模板字面量以及正則表達(dá)式上的改動(dòng)showImg(https://segmentfault.com/img/bVbfWak?w=861&h=622); 《深入理解E...

    TANKING 評論0 收藏0
  • 《深入理解ES6》筆記——字符串和正則表達(dá)式(2)

    摘要:本章主要講個(gè)知識(shí)點(diǎn),字符串正則表達(dá)式字符串字符串是大原始數(shù)據(jù)類型。提供的標(biāo)準(zhǔn)形式,接受一個(gè)可選的字符串參數(shù),指明應(yīng)用某種標(biāo)準(zhǔn)形式。如果在字符串中檢測到指定文本,返回,否則。字符串內(nèi)插入反撇號的方式。 相比較于第一章變量的聲明,這一章的內(nèi)容有了一點(diǎn)深度提升,但還不至于很難理解。本章主要講2個(gè)知識(shí)點(diǎn),字符串、正則表達(dá)式 字符串 字符串(String)是JavaScript6大原始數(shù)據(jù)類型。...

    guqiu 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<