0

我有一个看起来像这样的字符串:

Blah blah one.<tmp>[[url=b, link=c]]</tmp> Blah blah two.
Also remember, blah blah three.<tmp>[[url=d, link=e]]</tmp>

所以我想获取bd(的url属性tmp),并更改字符串,使其看起来像这样(ex()函数返回一个字符串):

Blah blah one.<tmp>[[url=b, link=c, add=ex(b)]]</tmp> Blah blah two.
Also remember, blah blah three.<tmp>[[url=d, link=e, add=ex(d)]]</tmp>

我需要使用正则表达式,因为没有现有的库解析这种类型的标记。

我希望我的解释清楚。

提前致谢!

4

2 回答 2

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)+""; 
});
于 2012-09-03T03:42:08.357 回答
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>

于 2012-09-03T03:43:45.053 回答