Regex 任何不以.js结尾的字符串的正则表达式

Regex 任何不以.js结尾的字符串的正则表达式,regex,perl,Regex,Perl,这让我快发疯了。我正在尝试匹配不是以.js结尾的所有内容。我使用的是perl,那么?等等是非常受欢迎的 我想做的是: 一定要配这些 不要与这些匹配 这应该是一个非常简单的任务,但我只是被卡住了。我在文档中查找了regex、sed、perl,甚至在regexr上闲逛了半个小时。直观地说,(/^.*?(?!\.js)$/)应该这样做。我想我只是瞎了眼 提前感谢。您可以使用此正则表达式确保您的匹配不会以.js结束: ^(.(?!\.js$))+$ 当您只有负匹配条件时,最简单的方法是构造一个正正则表

这让我快发疯了。我正在尝试匹配不是以
.js
结尾的所有内容。我使用的是
perl
,那么
?等等是非常受欢迎的

我想做的是: 一定要配这些 不要与这些匹配 这应该是一个非常简单的任务,但我只是被卡住了。我在文档中查找了
regex
sed
perl
,甚至在regexr上闲逛了半个小时。直观地说,(
/^.*?(?!\.js)$/
)应该这样做。我想我只是瞎了眼


提前感谢。

您可以使用此正则表达式确保您的匹配不会以
.js
结束:

^(.(?!\.js$))+$

当您只有负匹配条件时,最简单的方法是构造一个正正则表达式,然后检查它是否匹配

if ($string !~ /\.js$/)
{
   print "Doesn't end in .js";
}
这比消极的环顾四周更容易理解,也更有效


仅当您需要混合正面和负面条件时才需要环顾四周(例如,“我需要匹配字符串中的“foo”,但仅当它后面没有“bar”时)。即使如此,有时使用多个简单的模式和逻辑比使用一个复杂的模式来满足您的所有需求更容易。

此模式应适合您的需要:


^.*(

Javascript没有lookbehind.
^(.(?!\.html$)*$如果您还希望匹配空字符串
^(.(?!\.js$))+$
if ($string !~ /\.js$/)
{
   print "Doesn't end in .js";
}