成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用正則表達式找出所有不包含某字符串的行

Nosee / 2458人閱讀

摘要:好處是用于斷言的字符串是一個表達式,通過可以寫任意多組字符串。該正則式斷言行尾之前的字符串不是。

之前寫 Webpack 配置的時候遇到這樣一個問題:

通過 /.(jpg|png|svg|gif|webp)$/ 判斷圖片文件,如果符合條件則將其儲存至 images 目錄下。
然而這樣做會把類似 fontawesome-webfont.svgglyphicons-halflings-regular.svg 這樣的字體文件也匹配進去

這是一個強迫癥患者所不能接受的。那么問題來了:如何使用正則式匹配一段文字不包含某個字符串呢?

匹配某段文字不以某字符串結(jié)尾

比如需要匹配一段文字不以 some_text 結(jié)尾

負值字符集合

/.*[^s][^o][^m][^e][^_][^t][^e][^x][^t]$/

比較容易想到的方式。雖然笨了點,但的確是有效的方法。但這樣做只能匹配長度≥9的字符串,而且只能判斷不以某一個字符串結(jié)尾。

零寬度負預測先行斷言

零寬度負預測先行斷言 判斷斷言出現(xiàn)的位置不匹配某個表達式。

/(?!some_text).{9}$/

該正則式斷言最后任意九個字符不是some_text。同樣只能匹配長度≥9的字符串。好處是用于斷言的字符串是一個表達式,通過 | 可以寫任意多組字符串。

零寬度負回顧后發(fā)斷言

零寬度負預測后發(fā)斷言 判斷斷言出現(xiàn)的位置之前不匹配某個表達式。它進入 EcmaScript 標準比較晚,Chrome 62 才提供支持。

/(?

該正則式斷言行尾之前的字符串不是some_text。這樣寫就對字符串長度沒有限制,是最完美的寫法,可惜瀏覽器支持度較差。

原生 JS 方法

str.endsWith("some_text")
匹配某段文字不以某字符串開頭

比如需要匹配一段文字不以 some_text 開頭

負值字符集合

/^[^s][^o][^m][^e][^_][^t][^e][^x][^t]/

好想,但同樣只能匹配長度≥9的字符串。

零寬度負預測先行斷言

/^(!some_text)/

匹配行首位置后不出現(xiàn) some_text。沒有字符串長度限制,也沒有瀏覽器兼容性問題。

原生 JS 方法

str.startsWith("some_text")
匹配某段文字不包含某字符串

比如匹配某段文字不包含字符串 some_text

零寬度負預測先行斷言

/^((?!some_text).)*$/

正則式斷言該段文字的任意位置都不出現(xiàn) some_text。這樣理解:

/^(?!some_text).(?!some_text).(?!some_text).(?!some_text).(?!some_text).(?!some_text).……$/

原生 JS 方法

str.includes("some_text") // ES2016,注意不是 contains
str.indexOf("some_text") >= 0 // 兼容性更好

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/93147.html

相關(guān)文章

  • nginx

    摘要:文本處理工具文本處理三劍客文本過濾工具基本正則表達式,流編輯器文本編輯工具上的實現(xiàn)為,文本報告生成器,格式化文本正則表達式由一類特殊字符及文本字符所編寫的模式類別基本正則表達式擴展正則表達式作用文本搜索工具,根據(jù)用戶指定的模式過濾條件對目標 Command grep 文本處理工具 Linux文本處理三劍客 grep:文本過濾工具(pattern) grep:基本正則表達式 se...

    andycall 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<