繁体   English   中英

将方括号和花括号替换为javascript或jquery中的圆括号

[英]replace square bracket & curly brackets to round brackets in javascript or jquery

我有这样的字符串

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

我需要将所有方括号和花括号替换为javascript或jquery中的圆括号

我试过这个

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

但它取代了所有开放式和闭合式并行

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

有任何想法吗 ?

您可以使用简单的方法

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

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

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

功能(更换)
要调用以创建新子字符串的函数(用于替换从参数1接收的子字符串)。 提供给此函数的参数在下面的“将函数指定为参数”部分中进行了描述。

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

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

尝试使用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; 

在一个替代

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

我认为

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM