最佳正则表达式方法

时间:2014-11-21 11:40:35

标签: javascript html regex optimization

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

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

<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*(?:"|')?

第一次看没有嵌套TD的TR,第二次查找iframes元素,第三次查找TABLE | TD | TR,样式属性包含宽度样式或TABLE | TD | TR直接使用width属性

我的问题:

我正在使用regex101.com生成的以下Javascript代码:

    while ((m = re.exec(st)) != null) {
            if (m.index === re.lastIndex) {
                re.lastIndex++;
            }

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

问题是在if语句中我必须知道找到了哪种模式, 没有嵌套TD的TR?是iframe吗?宽度属性是? 如何优化代码而不必使用这种逻辑?捕获群组?

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

1 个答案:

答案 0 :(得分:1)

您无法使用正则表达式解析HTML。如果您使用的是JavaScript,可以考虑使用documentFragment来操作DOM元素。

RegEx match open tags except XHTML self-contained tags

相关问题