繁体   English   中英

将变量添加到regexp匹配javascript

[英]Add variable to regexp match javascript

如何在regexp匹配javascript中添加变量?

var element = "table",
    attr = "id",
    elementId = "listtable";

var res = '<table id="listtable"><tr>test</tr></table>'.match(new RegExp('<table(.+?)>(.+?)\</table>', 'gi'));
console.log(res);

结果: ["<table id="listtable"><tr>test</tr></table>"]

如何获得这样的结果: ["<table id="listtable"><tr>test</tr></table>", "<tr>test</tr>"]

提前致谢。

您可以通过删除全局标志来做到这一点。 如果在正则表达式中指定全局标志,则返回的数组将仅包含匹配项数组。 如果不使用全局标志,它将返回整个匹配项及其每个捕获组的数组。

对于您的情况,您将需要以下内容:

var res = '<table id="listtable"><tr>test</tr></table>'.match(new RegExp('<table(.+?)>(.+?)\</table>', 'i'));
console.log(res); //["<table id="listtable"><tr>test</tr></table>", " id="listtable"", "<tr>test</tr>"]

所以这只是在标记中没有g

您如何使用本机HTML解析器而不是正则表达式? 您可以执行以下操作:

var str = '<table id="listtable"><tr>test</tr></table>';
var div = document.createElement("div");
div.innerHTML = str;

// A tbody is automatically created in a table
// You could also do tr.outerHTML if you know there will be a tr
var content = div.querySelector("tbody").innerHTML; // <-- "<tr>test</tr>"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM