使用Regex修改字符串

时间:2012-09-03 03:25:05

标签: javascript regex

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

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

所以我想获得bdurl的{​​{1}}属性),并更改字符串,使其看起来像这样{{1函数返回一个String):

tmp

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

我希望我的解释清楚。

提前致谢!

2 个答案:

答案 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>内的字符串。