使用Regex从HTML标记中提取字符串

时间:2014-04-10 06:03:06

标签: javascript regex parsing


您好

我正在尝试从下划线模板获取所有变量,因此在此字符串中:

 <%=userID %> </td><td><%=username %> </td><td><%=firstname %>

我想得到一个数组:

{userID, username,firstname}

有些说明:

  1. 我不能假设字符串中有空格。

  2. 变量名称可以在模板中重复。

  3. html标签可能有所不同,这只是一个例子。模板可以基于或其他任何内容。

  4. 我尝试了什么

        var regexp = /<%=(.+)%>/;
    

    为何失败

    上面的Regexp也会得到初始字符串,因为它符合正则表达式的要求。我对Regexp不太熟悉,我担心我会遗漏一些非常简单的东西。

    我也知道一般来说用正则表达式解析HTML是不好的做法,但是这个具体的例子并不完全是HTML解析(在我看来),因为我不需要特定的html标签。

    提前致谢!

2 个答案:

答案 0 :(得分:0)

您需要使用括号进行分组,并使用字符类来限制匹配的字符。尝试:

    var regexp = /<%=([\w\s]+)%>/g;
    var html = "<%=userID %> </td><td><%=username %> </td><td><%=firstname %>";
    var match = [], result = [];

    while (match = regexp.exec(html))
        result.push(match[1].trim());
    console.log("Result = " + result);

    // Result = userID,username,firstname 

答案 1 :(得分:0)

将正则表达式更改为:

<%=(.+?)%>

?是一个懒惰的匹配器。