javascript - js中基于正则表达式的替换

标签 javascript regex

实际上我想替换一个字符串,除非它出现在圆括号中。

例如:

JAVA is a nice language. (JAVA) has lots of features. JAVA is portable. (JAVA) even comes in 64 bit.

现在如果我用 C 替换 JAVA:

然后期望的输出是:

C is a nice language. (JAVA) has lots of features. C is portable. (JAVA) even comes in 64 bit. 

甚至java也可以作为子字符串出现

 XJAVAX is a nice language. (XJAVAX) has lots of features. JAVA is portable. (JAVA) even comes in 64 bit.

现在,如果我用 C 替换 JAVA:

然后预期的输出:

XCX is a nice language. (XJAVAX) has lots of features. C is portable. (JAVA) even comes in 64 bit.

最佳答案

由于 JavaScript 没有后视,最简单的方法可能是交替:

str = str.replace(/\(JAVA\)|JAVA/g, function(m) {
    return m === "(JAVA)" ? m : "C";
    // Or
    // return m.length === 6 ? m : "C";
});

除此之外,您开始尝试 simulate look-behind ,这在某些方面是可能的,但很麻烦。

关于javascript - js中基于正则表达式的替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8239540/

相关文章:

javascript - 使用kinetic.js替换HTML5 Canvas 中的图像?

javascript - SVG <path href =""> 问题

javascript - 删除对象属性在删除操作之前生效

正则表达式帮助不是 a-z 或 0-9

regex - 为什么 sed 不将\t 识别为制表符?

java - 在 Java 和 C# 中使用 POSIX 删除所有标点符号会产生不同的输出

javascript - 如何更改 "HTML"样式

javascript - 添加/删除值以在单击时输入

正则表达式删除除最后一次出现的单个字符之外的所有字符

javascript - 如何在 JavaScript 中使用 RegEx 从 twitch 剪辑中提取 URL