Javascript 最佳正则表达式方法

Javascript 最佳正则表达式方法,javascript,html,regex,optimization,Javascript,Html,Regex,Optimization,我必须解析一个HTML文本,并从表tr td中取出所有iframe、脚本和输入元素以及宽度属性。最后我必须查找tr widthout td inside(嵌套) 我的正则表达式是这样的: <tr>[^<td>]*<\/tr>|<script[^<]*>.*[\s\S]*<\/script>| <iframe[^<]*>.*[\s\S]*<\/iframe>| <(?:table|td|tr)[

我必须解析一个HTML文本,并从表tr td中取出所有iframe、脚本和输入元素以及宽度属性。最后我必须查找tr widthout td inside(嵌套)

我的正则表达式是这样的:

<tr>[^<td>]*<\/tr>|<script[^<]*>.*[\s\S]*<\/script>|
<iframe[^<]*>.*[\s\S]*<\/iframe>|
 <(?:table|td|tr)[^<>]+style\s*=\s*(?:"|').*width(?:=|\:)\w*\W?(?:"|')|<(?:table|td|tr)  [^<>]+width\s*(?:=|:)\s*(?:"|')?\w*(?:"|')?
问题是在if语句中我必须知道找到了哪种模式, TR是否没有嵌套TD?是Iframe吗?宽度属性是什么? 如何在不使用这种逻辑的情况下优化代码?捕捉群体


此文本插入到网页的textarea字段中,因此有时可能只是普通文本,问题是当用户在不知道文本区域的情况下复制和粘贴html代码时。

您无法使用正则表达式解析html。如果您使用的是JavaScript,您可能会考虑使用文档片段来处理DOM元素。


按原样解析DOM;特别是因为它是javascript。regex会使事情变得过于复杂您遇到问题的原因是您试图用螺丝刀(regexps)修剪草坪(解析HTML)。使用HTML解析器解析HTML。使用HTMLDOM导航和操作HTML。不要把DOM看作一个字符串。问题是我必须分析复制到textarea中的文本,有时这个文本不是HTML文本,有时是因为用户在不知道的情况下复制并粘贴了所有页面。我不明白为什么这是一种特殊情况,您必须使用regex分析文本。当插入数据库和显示在页面上时,正确地转义文本。问题是我必须分析复制到文本区域的文本,有时此文本不是HTML文本,有时是因为用户在不知道的情况下复制和粘贴所有页面
    while ((m = re.exec(st)) != null) {
            if (m.index === re.lastIndex) {
                re.lastIndex++;
            }

if(m.search(...)){}else if(m.search(...))else ...