Javascript 正则表达式:替换模式中函数返回值的字符串
输入:Javascript 正则表达式:替换模式中函数返回值的字符串,javascript,regex,string,replace,Javascript,Regex,String,Replace,输入:“一些随机文本[[specialthing]]诸如此类” 输出:“一些随机文本另一个文本废话” 目标: 将[[specialthing]]替换为myFunction('specialthing')将返回 我已经有了一个函数,没有正则表达式就可以做到这一点,但我想知道是否有更简单/更好的方法来做到这一点 我的代码: data = "some random text [[specialthing]] blah blah"; for(var i = 0 ; i < dat
“一些随机文本[[specialthing]]诸如此类”
输出:“一些随机文本另一个文本废话”
目标: 将
[[specialthing]]
替换为myFunction('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);
}
}
}
}
我正在使用javascript
解决方案不需要是正则表达式。您可以将以下正则表达式匹配为:
([^\[]*)(..[^\]*])(.*)
然后替换为:
'$1'+myFunction($2)+'$3'//这是伪代码,不是实际代码
演示:在本例中,regex或多或少是为了满足您的需求而设计的。为您的模式手动编写字符串替换的逻辑将需要大量的工作,相对而言,需要大量的索引数学,因此regex不需要手动执行。以下是您想要的regex的javascript版本:
/(.*)\[\[(.*)\]\](.*)/
下面是一个正在运行的示例非常感谢。我明白了:D
data = "some random text [[specialthing]] blah blah";
var strInBracket = data.match(/([^\[]*)(..[^\]]*..)(.*)/)[2];
var newStr = myFunction(strInBracket.slice(2,-2));
data = data.replace(strInBracket,newStr);