Javascript 用于子字符串和非子字符串的正则表达式

Javascript 用于子字符串和非子字符串的正则表达式,javascript,regex,Javascript,Regex,我需要一个Javascript中的正则表达式模式,它将包括所有以.html结尾的文件名,并包含字符串rgo1 我还需要Javascript中的正则表达式模式,它将排除.html结尾的所有文件名,并包含字符串rgo1 这是用于webpack.config中的文件名匹配,这就是我想要该模式的原因 感谢您提供的“包含”模式,我发现了一个有效的模式,我现在将失败的尝试粘贴到我的“不包含模式”: 您的正则表达式将是re=/(rgo1)(.html)$/ 假设您的文件名位于filenamesArray中 然

我需要一个Javascript中的正则表达式模式,它将包括所有以
.html
结尾的文件名,并包含字符串
rgo1

我还需要Javascript中的正则表达式模式,它将排除
.html
结尾的所有文件名,并包含字符串
rgo1

这是用于webpack.config中的文件名匹配,这就是我想要该模式的原因

感谢您提供的“包含”模式,我发现了一个有效的模式,我现在将失败的尝试粘贴到我的“不包含模式”:


您的正则表达式将是
re=/(rgo1)(.html)$/

假设您的文件名位于
filenamesArray

然后你可以做:

filenamesArray.filter(name => re.test(name))


要获得所需的内容。

不需要正则表达式:

if ( fileName.includes('rgo1') && fileName.endsWith('.html') ) {
    // Good filename
}
如果你关心IE:

var fileName='rgo1.html';
if(fileName.indexOf('rgo1')!=-1&&fileName.substr(-5)=='.html')){
console.log(true);

}
使用正则表达式:
/rgo1.*\.html$/

Regex解释:它基本上会匹配一个字符串,该字符串包含
rgo1
,后跟任何内容,并以
.html
结尾

对于问题的另一部分,只需否定
.test()

演示:

var filename1='xyzrgo1abc.html';
var filename2='rgo1abc.html';
var regex=new RegExp('rgo1.\\\.html$);
log('filename1test:',regex.test(filename1));
log('filename2test:',regex.test(filename1));

log('filename1否定测试:',!regex.test(filename1))匹配任何包含rgo1的.html

\S*rgo1\S*\.html

对于不包含正则表达式的,请尝试使用:

^((?!regol).)*\.((?!html).)*$
对于包含正则表达式,请使用@Rahul-Desai-answer

片段演示:

console.log(MatchRegex('index.php');
log(MatchRegex('index.html');
log(MatchRegex('regol.php');
log(MatchRegex('regol.html');
log(MatchRegex('readme.md');
函数MatchRegex(word){
设regex=newregexp(/^((?!regol)。*\((?!html)。)*$/);
返回正则表达式测试(word);

}
这是两个字符串,在这种情况下,我基本上是在实时记录我失败的尝试……好吧……为什么不……站在像
*(rgo1)。*(.html$)
。@DontVoteMeDown这样的东西旁边,你应该在
.html
\.html
中跳过这段时间。否则,这就是第一个问题的正确模式。@RickHitchcock接得好!像这样的工具可以帮助您以可视化的方式查看您所写的内容。我会在@RahulDesai使用此解决方案,然后只使用
indexOf
。点仍然存在-不需要正则表达式。
.endsWith()
的polyfill是
您的正则表达式将是re=/(rgo1)(.html)$/
不,它不会。或者不应该,因为正则表达式不起作用。空格是怎么回事?我假设那个文件没有空格。
\S*rgo1\S*\.html
^((?!regol).)*\.((?!html).)*$