1

テキスト文字列で [[mymarker-id]] の出現を探し、それをカスタム html 文字列に置き換えたいと思います。

'<div>id</div>'

例えば:

"this is a sample text [[mymarker-123_4Efd]] for illustration purpose"

になるだろう

"this is a sample text <div>123_4Efd</div> for illustration purpose"

id と一致する 8 文字の長さの文字列: ([a-zA-Z0-9_-]){8}

質問する前に多くのことを試したと言えたらいいのにと思いますが、正規表現はかなり苦手です

4

4 に答える 4

2

8 文字の長さをキャプチャし、カスタム HTML の をキャプチャしたテキストにId置き換えます。Id

var marker = "this is a sample text [[mymarker-123_4Efd]] for illustration purpose"
marker.replace(/\[\[mymarker-(.{8})\]\]/, '<div>$1</div>')

または、カスタム HTML が動的に構築されている場合:

var customHtml = '<div>id</div>';
var id = marker.match(/\[\[mymarker-(.{8})\]\]/)[1];
customHtml = customHtml.replace('id', id);

jsBin デモ

于 2013-11-05T08:52:07.180 に答える
0
var str   = "this is a sample text [[mymarker-123_4Efd]] for illustration purpose";
var regex = /(\[\[mymarker\-)([^\]]+)\]\]/;
str = str.replace(regex, "<div>$2</div>");
于 2013-11-05T08:52:45.343 に答える
0

次の正規表現を使用します。

\[\[mymarker\-([^\]]+)\]\]
于 2013-11-05T08:46:01.987 に答える
-1
    var re = /\[\[mymarker-123_4Efd\]\]/gi;
    var str = "this is a sample text [[mymarker-123_4Efd]] for illustration purpose";
    var newstr = str.replace(re, "<div>123_4Efd</div>");
    console.log(newstr);

[ と ] 記号はバックスラッシュでエスケープする必要があります

于 2013-11-05T08:54:13.753 に答える