簡體   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