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

时间:2011-11-23 09:08:13

标签: 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.

1 个答案:

答案 0 :(得分:3)

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

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

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