JS Regex分别替换左右括号

时间:2015-11-10 09:48:10

标签: javascript regex string replace

我正在尝试用不同的字符替换字符串中的方括号,以便它们在SQL中正确转义。例如,我需要将[[[],和]替换为[]]。

我环顾四周,但只能找到用角色替换单个支架的解决方案,或者用相同的角色替换它们,这两个都不符合我的需要。

我可以使用正则表达式在单独的替换调用中替换它们,所以要替换左边:

if (someString.value.indexOf('[') != -1) {
someString.value = someString.value.replace(/[\[']+/g, '[[]');
}

但很明显,如果我在右侧括号尝试相同的话:

if (someString.value.indexOf(']') != -1) {
someString.value = someString.value.replace(/[\]']+/g, '[]]');

它还会考虑第一个语句中添加的额外括号,然后完全混淆字符串

如何替换字符串,例如,以下内容:

"[someText]"

将替换为:

"[[]someText[]]"

我应该注意,我需要替换方括号内包含文本的任何实例,而不仅仅是第一个实例。

1 个答案:

答案 0 :(得分:3)

您可以使用replace的函数:

someString.value = someString.value.replace(/[\[\]]/g, function(match) {
    return match == '[' ? '[[]' : '[]]';
});