2015-07-06 86 views
2

我有这样替换方括号和花括号圆括号中的JavaScript或jQuery的

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

我需要一个字符串替换所有方括号&花括号圆括号中的JavaScript或jQuery的

我已经试过这

.replace(/[\[\]']+/g,'') 

但它取代所有并行

打开和关闭括号

预期结果是= "(45)*(52)*(45)*(52)*(45)*(52)*69"

任何想法?

+3

'.replace(/ [\ [\ {](\ d +)[\] \}] /克, “($ 1)”) ' –

回答

6

在一个简单的方法,你可以使用

"{45}*[52]*{45}*[52]*{45}*[52]*69".split(/[\{\[]/).join('(').split(/[\}\]]/).join(')') 
+0

谢谢Harpreet ..这是我的预期..一个单行代码!其真棒+1 –

+0

@ Jake745谢谢,很高兴帮助:) –

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

我认为

+0

感谢您的支持:)它真的帮助我获得有价值的知识+1 –

3

您可以使用函数作为第二个参数调用.replace()。 使用此功能,您可以创建一个新的子字符串作为替换。

str.replace(regexp|substr, newSubStr|function[, flags])

功能(替换)
一个函数被调用以创建新的子 (到位子串的从参数 1接收)。提供给此函数的参数在下面的“指定函数作为参数”一节中进行了介绍。

指定一个函数作为参数
您可以指定一个函数作为第二个参数。在这种情况下, 函数将在匹配执行后被调用。 函数的结果(返回值)将被用作替换 字符串。 (注意:在这种情况下,上述特殊替换模式不适用 )。请注意,如果第一个参数是全局的,则对于要替换的每个完整匹配,函数将被调用多个 次。

"[abc]".replace(/\[|\]/g, function(m) { 
    var replacements = {"[": "(", "]": ")"}; return replacements[m]; 
}); 
+0

完整答案: “{45} * [52] * {45} * (替代方案)[52] * {45} * [52] * 69“.replace(/(\ [| \])|(\ {| \})/ g,function(m)var replacements = {”[“ “(”,“]”:“)”,“{”:“(”,“}”:“)”}; return replacements [m]; }); –

+0

此解决方案比其他解决方案具有更好的性能 –

+0

感谢您的支持:)其信息! +1 –

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;

+0

感谢您的支持:) +1 –