您好
我正在尝试从下划线模板获取所有变量,因此在此字符串中:
<%=userID %> </td><td><%=username %> </td><td><%=firstname %>
我想得到一个数组:
{userID, username,firstname}
有些说明:
我不能假设字符串中有空格。
变量名称可以在模板中重复。
html标签可能有所不同,这只是一个例子。模板可以基于或其他任何内容。
我尝试了什么:
var regexp = /<%=(.+)%>/;
为何失败
上面的Regexp也会得到初始字符串,因为它符合正则表达式的要求。我对Regexp不太熟悉,我担心我会遗漏一些非常简单的东西。
我也知道一般来说用正则表达式解析HTML是不好的做法,但是这个具体的例子并不完全是HTML解析(在我看来),因为我不需要特定的html标签。
提前致谢!
答案 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)
将正则表达式更改为:
<%=(.+?)%>
?
是一个懒惰的匹配器。