RegEX解析和循环多个自定义标记

时间:2014-11-12 16:15:51

标签: javascript regex

我试图通过循环遍历每个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;
    });

1 个答案:

答案 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}}
相关问题