javascript - JS Regex 分别替换左右括号

标签 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[]]"

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

最佳答案

您可以使用带有 replace 的函数:

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

关于javascript - JS Regex 分别替换左右括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33627072/

相关文章:

regex - 条形码的正则表达式(12 或 14 位)

javascript - 将两个 div 对齐到较高的 div 的底部

javascript - 将 node.js 缓冲区转换为 ref-struct 实例

ruby - 只匹配一个独立的字母

java - 编译错误尝试修复,没有成功

c++ - ‘internalPath’(类型 ‘std::string {aka std::basic_string<char>}’ )到类型 ‘std::basic_string<char>&&’

c++ - (c++) 我需要在新类的头文件中包含什么

javascript - 在按钮上添加事件监听器 - Javascript

javascript - 在 R Markdown knit 输出中显示 javascript 结果

html - 如何选择H1中的部分文本?