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

資訊專欄INFORMATION COLUMN

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

Nosee / 2397人閱讀

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

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

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

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

匹配某段文字不以某字符串結尾

比如需要匹配一段文字不以 some_text 結尾

負值字符集合

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

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

零寬度負預測先行斷言

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

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

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

零寬度負回顧后發斷言

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

/(?

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

原生 JS 方法

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

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

負值字符集合

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

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

零寬度負預測先行斷言

/^(!some_text)/

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

原生 JS 方法

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

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

零寬度負預測先行斷言

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

正則式斷言該段文字的任意位置都不出現 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 // 兼容性更好

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/93147.html

相關文章

  • nginx

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

    andycall 評論0 收藏0

發表評論

0條評論

Nosee

|高級講師

TA的文章

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