使用javascript正则表达式搜索/替换自定义标记

时间:2013-11-05 08:42:43

标签: javascript regex

在文本字符串中,我想查找[[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 个答案:

答案 0 :(得分:2)

捕获长度为8个字符的Id,并将自定义HTML中的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 Demo

答案 1 :(得分:0)

使用此正则表达式:

\[\[mymarker\-([^\]]+)\]\]

答案 2 :(得分:0)

var str   = "this is a sample text [[mymarker-123_4Efd]] for illustration purpose";
var regex = /(\[\[mymarker\-)([^\]]+)\]\]/;
str = str.replace(regex, "<div>$2</div>");

答案 3 :(得分:-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);

您必须使用反斜杠转义[和]符号