gpt4 book ai didi

javascript - 正则表达式 - 匹配前面没有另一个字符串的字符串 (JavaScript)

转载 作者:行者123 更新时间:2023-11-29 10:17:26 25 4
gpt4 key购买 nike

我试图找到一个正则表达式,当它前面没有另一个特定字符串时(在我的例子中,当它前面没有“http://”)时,它会匹配一个字符串。这是在 JavaScript 中,我在 Chrome 上运行(这无关紧要)。

示例代码为:

var str = 'http://www.stackoverflow.com www.stackoverflow.com';
alert(str.replace(new RegExp('SOMETHING','g'),'rocks'));

我想用正则表达式替换 SOMETHING,这意味着“匹配 www.stackoverflow.com,除非它前面有 http://”。然后警报应该自然地显示“http://www.stackoverflow.com rocks”。

有人可以帮忙吗?感觉就像我尝试了以前答案中的所有内容,但没有任何效果。谢谢!

最佳答案

由于 JavaScript 正则表达式引擎不支持“后视”断言,因此无法使用普通正则表达式。尽管如此,还是有一个解决方法,涉及 replace 回调函数:

var str = "As http://JavaScript regex engines don't support `lookbehind`, it's not possible to do with plain regex. Still, there's a workaround";

var adjusted = str.replace(/\S+/g, function(match) {
return match.slice(0, 7) === 'http://'
? match
: 'rocks'
});
console.log(adjusted);

您实际上可以为这些函数创建生成器:

var replaceIfNotPrecededBy = function(notPrecededBy, replacement) {
return function(match) {
return match.slice(0, notPrecededBy.length) === notPrecededBy
? match
: replacement;
}
};

...然后在 replace 中使用它:

var adjusted = str.replace(/\S+/g, replaceIfNotPrecededBy('http://', 'rocks'));

JS Fiddle .

关于javascript - 正则表达式 - 匹配前面没有另一个字符串的字符串 (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18884262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com