我有一个像这样的字符串
?
我需要更换所有方括号和&用javascript或jquery中的圆括号括起来的大括号
我试过这个
var data = "{45}*[52]*{45}*[52]*{45}*[52]*69"
但它会替换所有并列的开括号和闭括号
预期结果为= .replace(/[\[\]']+/g,'')
有什么想法吗?
答案 0 :(得分:6)
以简单的方式,您可以使用
"{45}*[52]*{45}*[52]*{45}*[52]*69".split(/[\{\[]/).join('(').split(/[\}\]]/).join(')')
答案 1 :(得分:2)
您可以使用函数作为第二个参数调用.replace()
。
使用此功能,您可以创建一个新的子字符串,用作替换。
str.replace(regexp|substr, newSubStr|function[, flags])
功能(替换)
要调用以创建新函数的函数 substring(代替从参数接收的子字符串 1)。提供给此函数的参数在"将函数指定为参数"以下部分。将函数指定为参数
您可以将函数指定为第二个参数。在这种情况下, 在执行匹配后将调用函数。该 函数的结果(返回值)将用作替换 串。 (注意:上述特殊替换模式没有 适用于这种情况。)请注意,该函数将被多次调用 如果正则表达式中的每个完整匹配将被替换的时间 第一个参数是全局的。
"[abc]".replace(/\[|\]/g, function(m) {
var replacements = {"[": "(", "]": ")"}; return replacements[m];
});
答案 2 :(得分:2)
尝试使用RegExp
/(.\d{2}.)/
匹配任意字符,前两位数字,两位数字,任意字符; .match()
匹配数字,返回替换字符串
var data = "{45}*[52]*{45}*[52]*{45}*[52]*69";
var res = data.replace(/(.\d{2}.)/g, function(match) {
return "(" + match.match(/\d+/)[0] + ")"
});
document.body.textContent = res;

答案 3 :(得分:1)
一次替换
var data = "{45}*[52]*{45}*[52]*{45}*[52]*69";
data = data.replace(/[\[\{](\d+)[\]\}]/g, "($1)")
虽然它也会用(123)替换[123}和{123] ......所以技术上不正确
如果你只想正确地替换""格式化输入,你需要两个替换呼叫
data = data.replace(/[\{](\d+)[\}]/g, "($1)").replace(/[\[](\d+)[\]]/g, "($1)")
我认为