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