我试图通过循环遍历每个matcc来解析以下数据,但表达式是抓住第一个[FILE]一直到最后一个[/ FILE]。我希望它迭代每个自定义标签。
数据:
"[FILE]file_1.png[/FILE]<br /><br /><br />[FILE]file_2.png[/FILE]"
结果:
file_1.png<br /><br /><br />file_2.png`
var urlRegex = /(\[FILE\]).*(\[\/FILE\])/ig;
text = text.replace(urlRegex, function(url) {
url = url.replace(/\[.?FILE\]/ig, "");
var path = "./uploads/" + $('#CURRENT_FOLDER_UID').val() + "/";
var res = "";
arr = url.split(".");
ext = (arr[arr.length - 1]).toLowerCase();
if (img.indexOf(ext) > -1) {
//url = encodeURI(url);
res = '<img src="' + path + encodeURI(stripHTML(url)) + '" />';
} else {
res = '<a href="' + path + encodeURI(stripHTML(url)) + '" target="_blank">' + url + '</a>';
}
return res;
});
答案 0 :(得分:1)
(\[FILE\]).*?(\[\/FILE\])
试试这个。将*
放在?
之后让*
非贪婪。\[FILE\]|\[\/FILE\]
默认是贪婪的。它会持续到[[/ FILE]
您也可以尝试var re = /\[FILE\]|\[\/FILE\]/gm;
var str = '[FILE]file_1.png[/FILE]<br /><br /><br />[FILE]file_2.png[/FILE]';
var subst = '';
var result = str.replace(re, subst);
。
参见演示。
http://regex101.com/r/kP8uF5/4
{{1}}