我有带链接标记的原始html,我想要实现的目标是从标记中提取href属性以及除标记之外的标记之间的所有文本。 例如:
<br>#EXTINF:-1 tvg-name="1377",Страшное HD<br>
<a title="Ссылка" rel="nofollow" href="http://4pda.ru/pages/go/?u=http%3A%2F%2F46.61.226.18%2Fhls%2FCH_C01_STRASHNOEHD%2Fbw3000000%2Fvariant.m3u8%3Fversion%3D2" target="_blank">http://46.61.226.18/hl…variant.m3u8?version=2</a>
<br>#EXTINF:-1 tvg-name="983" ,Первый канал HD<br>
<a title="Ссылка" rel="nofollow" href="http://4pda.ru/pages/go/?u=http%3A%2F%2F46.61.226.18%2Fhls%2FCH_C06_1TVHD%2Fbw3000000%2Fvariant.m3u8%3Fversion%3D2" target="_blank">http://46.61.226.18/hl…variant.m3u8?version=2</a>
必须转换为:
#EXTINF:-1 tvg-name="1377",Страшное HD
http://4pda.ru/pages/go/?u=http%3A%2F%2F46.61.226.18%2Fhls%2FCH_C01_STRASHNOEHD%2Fbw3000000%2Fvariant.m3u8%3Fversion%3D2
#EXTINF:-1 tvg-name="983" ,Первый канал HD
http://4pda.ru/pages/go/?u=http%3A%2F%2F46.61.226.18%2Fhls%2FCH_C06_1TVHD%2Fbw3000000%2Fvariant.m3u8%3Fversion%3D2
我尝试了不同的正则表达式:
我在这里做了什么
var source_text = $("#source").val();
var delete_start_of_link_tag = source_text.replace(/<a(.+?)href="/gi, "");
var delete_tags = delete_start_of_link_tag.replace(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gi, "");
</a>
,<br>
然后我想删除href值之后的所有文本到行尾。
我应该在替换方法中使用什么正则表达式,或者可能在哪种方式进行转换?
答案 0 :(得分:0)
看起来你已经在使用jQuery了。
获取每个锚点的href
$('a').each(function(){
var href = $(this).attr('href');
});
获取每个锚的文本:
$('a').each(function(){
var text = $(this).text();
});
您还没有在这些周围显示包装元素,但您可以获得任何选择的文本(没有标记)。
var text = $('#some_id').text();
答案 1 :(得分:0)
格式化锚标记
在您的示例中,您没有从html替换">
部分
请检查此example
使用此代码删除href close quote(&#39;或&#34;)
后的所有内容var delete_tags = delete_start_of_link_tag.replace(/".*/gi, "");
很少有事情需要注意
1. href
中的值用单引号('
)或双引号("
)括起来,两者都有效。
2.与给定字符串或内容中的所有href
匹配的完全正则表达式为href=[\"|'].*?[\"|']
3.我遇到的href
值中的一些模式如下。
http://www.so.com
https://www.so.com
www.so.com
//so.com
/socom.html
javascript*
mailto*
tel*
因此,如果您想格式化网址,那么您已经考虑了上述情况,我可能错过了一些。