我有以下正則運算式:/\.([s]?[ac]ss)$/。問題是,它匹配.scss, .sass, .css, .ass。我怎樣才能讓它不匹配.ass?
uj5u.com熱心網友回復:
這也將匹配.scss,.sass并且.css只有它非常可讀且不言自明
/\.(sc|sa|c)ss$/
uj5u.com熱心網友回復:
另一種使用交替的方法:
\.((?:s[ac]|c)ss)$

uj5u.com熱心網友回復:
在您的模式\.([s]?[ac]ss)$中,您匹配.ass,因為前導s可選和字符類[ac]可以匹配這兩個字符。
相反,您可以使用環視斷言,或使用替代|來僅允許某些替代。
其他一些變化可能是:
\.(s?c|sa)ss$
\.匹配一個.(捕獲組 1s?c|sa匹配一個可選s然后匹配c或匹配sa
)關閉組 1ss$ss在字串末尾匹配
正則運算式演示
\.(s[ac]|c)ss$
先前模式的變體,現在匹配saor scorc
正則運算式演示
如果在您的環境中支持后向斷言:
\.s?[ac]ss$(?<!\.ass)
\.s?匹配 a.和可選s[ac]匹配a或css$ss在字串末尾匹配(?<!\.ass).ass負向后看,不向左斷言
正則運算式演示
請注意,如果您只想要匹配,您也可以使用非捕獲組(?:...)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/437262.html
標籤:javascript 正则表达式
上一篇:在資料作業室中提取匹配URL
