JavaScript正则表达式不以(.js |.jsx |.scss)结尾

JavaScript正则表达式不以(.js |.jsx |.scss)结尾,javascript,regex,string,Javascript,Regex,String,我想实现一个JavaScript正则表达式,它不以.js |.jsx |.scss结尾,执行结果如下,但没有操作符!在RegEx之前 !/(.js|.jsx|.scss)$/ 您需要使用带有替代项的否定前瞻来拒绝以您在文章中提到的扩展名结尾的字符串。试试这个正则表达式 ^(?!.*(?:\.jsx?|\.scss)$).*$ var arr=['abc.js','xyz.jsx','ddd.scss','abc.jsa','xyz.jsxa','ddd.scssd']; 对于arr的s{

我想实现一个JavaScript正则表达式,它不以.js |.jsx |.scss结尾,执行结果如下,但没有操作符!在RegEx之前

!/(.js|.jsx|.scss)$/

您需要使用带有替代项的否定前瞻来拒绝以您在文章中提到的扩展名结尾的字符串。试试这个正则表达式

^(?!.*(?:\.jsx?|\.scss)$).*$
var arr=['abc.js','xyz.jsx','ddd.scss','abc.jsa','xyz.jsxa','ddd.scssd']; 对于arr的s{ console.logs+'->'+/^?!.*?:\.jsx?\.scss$.*/.tests; } 你可以用这个

^(?!.*\.(?:jsx?|scss)$).*$
^-锚定至管柱起点。 ?!.*\.?:jsx?| scss$.*-检查jsx、js和scss的条件 $-字符串的结尾。
可能的副本,谢谢你,它的工作。我想知道为什么?:在给定的正则表达式中是必需的?如果?:被删除,它也可以很好地工作。@licaomeng:?:只用于将一个组设置为非捕获组,因为默认情况下,一个组是捕获组,没有?:它也可以很好地工作。一般来说,将组设置为非捕获是一种很好的做法,除非您确实需要该组用于反向引用或组文本捕获,因为这样可以提高组的性能。现在已经很清楚了,谢谢。很高兴为您提供帮助: