我必须解析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代码。
答案 0 :(得分:1)
您无法使用正则表达式解析HTML。如果您使用的是JavaScript,可以考虑使用documentFragment来操作DOM元素。