我正在尝试用不同的字符替换字符串中的方括号,以便它们在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[]]"
我应该注意,我需要替换方括号内包含文本的任何实例,而不仅仅是第一个实例。
答案 0 :(得分:3)
您可以使用replace
的函数:
someString.value = someString.value.replace(/[\[\]]/g, function(match) {
return match == '[' ? '[[]' : '[]]';
});