我有一个看起来像这样的字符串:
Blah blah one.<tmp>[[url=b, link=c]]</tmp> Blah blah two.
Also remember, blah blah three.<tmp>[[url=d, link=e]]</tmp>
所以我想获得b
和d
(url
的{{1}}属性),并更改字符串,使其看起来像这样{{1函数返回一个String):
tmp
我需要使用正则表达式,因为没有现有的库解析这种类型的标记。
我希望我的解释清楚。
提前致谢!
答案 0 :(得分:0)
试试这个
var text = "Blah blah one.<tmp>[[url=b, link=c]]</tmp> Blah blah two.";
text.replace(/(url=([^,]+), [^\]]+)/g, "$1, add=ex($2)");
// return "Blah blah one.<tmp>[[url=b, link=c, add=ex(b)]]</tmp> Blah blah two."
更新:
// declare your ex() function first
var text = "Blah blah one.<tmp>[[url=b, link=c]]</tmp> Blah blah two.";
text.replace(/(url=([^,]+), [^\]]+)/g, function(){
return RegExp.$1 +", add="+ex(RegExp.$2)+"";
});
答案 1 :(得分:0)
尝试:
var str = "Blah blah one.<tmp>[[url=http://www.google.com, link=c]]</tmp> Blah blah two.";
var tempRe = /(<tmp>\[\[url=)([^,]+)(link=[^\]]\])(, \]<\/tmp>)/;
var newStr = str.replace(tempRe, '$1$2$3,add=ex($2)$4');
这只替换<tmp></tmp>
内的字符串。