0

私は次のような文字列を持っています:

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

だから私はband d(の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 に答える