Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 调整正则表达式以忽略链接HTML标记中的任何其他内容_Javascript_Html_Regex - Fatal编程技术网

Javascript 调整正则表达式以忽略链接HTML标记中的任何其他内容

Javascript 调整正则表达式以忽略链接HTML标记中的任何其他内容,javascript,html,regex,Javascript,Html,Regex,我有一个正则表达式: <a(?:.*)href="(.*)"(?:.*)>(.*)<\/a> (*) 到目前为止,我已经能够让它匹配HTML链接标签,其中有额外的属性。比如类和目标等等,这很有效 我现在想做的是调整它,使它匹配并忽略链接本身(如果有)中的任何其他标记,因为我只需要链接的文本和地址。我不确定这样做的最佳方法。始终使用DOM解析而不是正则表达式 这已被多次提出。根据对日益复杂的正则表达式形成的评论,只检查DOM会更容易。以以下为例: 函数fragment

我有一个正则表达式:

<a(?:.*)href="(.*)"(?:.*)>(.*)<\/a>
(*)
到目前为止,我已经能够让它匹配HTML链接标签,其中有额外的属性。比如类和目标等等,这很有效

我现在想做的是调整它,使它匹配并忽略链接本身(如果有)中的任何其他标记,因为我只需要链接的文本和地址。我不确定这样做的最佳方法。

始终使用DOM解析而不是正则表达式 这已被多次提出。根据对日益复杂的正则表达式形成的评论,只检查DOM会更容易。以以下为例:

函数fragmentFromString(strHTML){
返回document.createRange().createContextualFragment(strHTML);
}
让html=`“href=“testing.html”data id=“1”data popup text=“带我去”>测试这个

`; let fragment=fragmentFromString(html); 设aTags=Array.from(fragment.querySelectorAll('a'); aTags=aTags.map(a=>{ 返回{ href:a.href, text:a.textContent } }); console.log(aTags);
始终使用DOM解析而不是正则表达式 这已经被多次提出。根据对日益复杂的正则表达式形成的评论,只检查DOM会更容易。以下面的例子为例:

函数fragmentFromString(strHTML){
返回document.createRange().createContextualFragment(strHTML);
}
让html=`“href=“testing.html”data id=“1”data popup text=“带我去”>测试这个

`; let fragment=fragmentFromString(html); 设aTags=Array.from(fragment.querySelectorAll('a'); aTags=aTags.map(a=>{ 返回{ href:a.href, text:a.textContent } });
控制台日志(aTags)可能是。这是为了对已知格式一致的固定输入数据集进行一次性快速攻击(即,属性周围的引号一致,没有嵌入属性内部的html,大小写一致等)?如果是这样,请将regexp删除。否则,使用DOM解析器,或者准备无限循环“发现另一个奇怪的边缘情况,使正则表达式更加复杂,以解决它,冲洗和重复”)。可能是这样。这是为了对已知格式一致的固定输入数据集进行快速一次性攻击吗(即围绕属性使用一致的引号,与嵌入在属性中的html无关,大小写一致等)?如果是这样,请删除regexp。否则,请使用DOM解析器,或准备无限循环“发现另一个奇怪的边缘大小写,使regex更加复杂,以解决它,冲洗并重复”)。也请查看@gabykag.Petrioli,很好,这当然比我的好,但是回到原来的问题,把>里的其他东西去掉怎么样(因为我只想要链接文本,而不是随机样式和应用于它的东西以及其他随机标记。@NoutySquid,您是在DOM中评估
a
标记,还是从文本字符串中评估?@NoutySquid问题是,如果提供给正则表达式的文本不限于非常特定的规则,则正则表达式将无法处理任意输入s、 这就是为什么Scimonster对这个问题的评论如此高调的原因。看看这个@gabykag.Petrioli,好的catchWell,这肯定比我的好,但是回到最初的问题,在这里去掉>中的其他东西怎么样(因为我只想要链接文本,而不是随机样式和应用于它的东西以及其他随机标记。@NoutySquid,您是在DOM中评估
a
标记,还是从文本字符串中评估?@NoutySquid问题是,如果提供给正则表达式的文本不限于非常特定的规则,则正则表达式将无法处理任意输入s、 这就是为什么Scimonester对这个问题的评论如此高调的原因。