javascript - 子字符串而不是子字符串的正则表达式
问题描述
我需要一个 Javascript 中的 RegEx 模式,它将包括所有以 结尾.html
并包含 string 的文件名rgo1
。
我还需要 Javascript 中的 RegEx 模式,它将排除所有以 结尾.html
并包含 string 的文件名rgo1
。
这是用于 webpack.config 中的文件名匹配,这就是我想要该模式的原因。
感谢您提供“包含”模式,我找到了一个有效的模式,我现在将失败的尝试粘贴到我的“不包含模式”中:
[^rgo1].*\.html$/gm // nope
(?!^rgo1$).*\.html$ // nope
^((?!rgo1).)*$.*\.html$ // nope
^((?!rgo1).)*.\.html$ //works...paste this in your answer for the win
解决方案
使用正则表达式:/rgo1.*\.html$/
正则表达式解释:它将基本上匹配一个包含rgo1
后跟任何内容并以 . 结尾的字符串.html
。
对于问题的另一部分,只需否定.test()
演示:
var filename1 = 'xyzrgo1abc.html';
var filename2 = 'rgo1abc.html';
var regex = new RegExp('rgo1.*\\.html$');
console.log('filename1 test:', regex.test(filename1));
console.log('filename2 test:', regex.test(filename1));
console.log('filename1 negation test:', !regex.test(filename1));
注意:对于非正则表达式解决方案,请参阅@revo 的回答