輸入:"some random text [[specialthing]] blah blah"
正則表達式:替換字符串內模式的返回值函數的
輸出:"some random text ANOTHERTEXT blah blah"
目標:
由什麼myFunction('specialthing');
將返回更換[[specialthing]]
。
我已經得到了一個沒有正則表達式的函數,但我想知道是否會有更簡單/更好的方法來做到這一點。
我的代碼:
data = "some random text [[specialthing]] blah blah";
for(var i = 0 ; i < data.length ; i++){
if(data[i] == '[' && data[i+1] == '['){
var start = i;
for(var j = start; j < data.length ; j++){
if(data[j] == ']' && data[j+1] == ']'){
var strInBracket = data.slice(start+2,j);
var newStr = myFunction(strInBracket);
data = data.replace('\[\[' + strInBracket + '\]\]',newStr);
}
}
}
}
解決方案:
data = "some random text [[specialthing]] blah blah";
var strInBracket = data.match(/([^\[]*)(..[^\]]*..)(.*)/)[2];
var newStr = myFunction(strInBracket.slice(2,-2));
data = data.replace(strInBracket,newStr);
我使用的JavaScript。
該解決方案不需要是一個正則表達式。
非常感謝。我明白了:D – RainingChain