替换方括号&在javascript或jquery中用圆括号括起来的花括号

时间:2015-07-06 04:37:17

标签: javascript jquery regex

我有一个像这样的字符串

?

我需要更换所有方括号和&用javascript或jquery中的圆括号括起来的大括号

我试过这个

var data = "{45}*[52]*{45}*[52]*{45}*[52]*69"

但它会替换所有并列的开括号和闭括号

预期结果为= .replace(/[\[\]']+/g,'')

有什么想法吗?

4 个答案:

答案 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)")

我认为