Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.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,我有带链接标签的原始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%

我有带链接标签的原始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>
我尝试了不同的正则表达式:

这就是我所做的

var source_text=$source.val

var delete_start_of_link_tag=source_text.replace/,

然后我想删除行末尾href值之后的所有文本


我应该在replace方法中使用什么正则表达式,或者在哪里使用不同的转换方法?

看起来您已经在使用jQuery了

获取每个锚的href

$('a').each(function(){
    var href = $(this).attr('href');
});
获取每个锚点的文本:

$('a').each(function(){
    var text = $(this).text();
});
您没有在这些元素周围显示包装器元素,但是您可以在没有任何选择标记的情况下获得文本

var text = $('#some_id').text();
格式化锚定标记

在您的示例中,您没有将>部分替换为html。 所以检查一下这个

使用此代码删除href close quote'或

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* 邮寄* 电话*
<>如果你想格式化URL,那么你必须考虑上面的情况,我可能漏掉了一些。 我想我没有解释清楚。我想要一些我粘贴到textarea的特定文本转换成另一个没有特定符号的文本。我更新了问题的示例链接,但现在这个示例无法正常工作。您希望包含同级元素的文本还是仅包含同级文本节点?在您的问题中,您只显示同级文本节点,例如,在一个节点中没有文本。另外,您想修改页面上的元素,还是只提取文本的副本?我希望用户将包含一些html标记的文本-文本格式的html放入网页的文本区域,然后单击按钮转换。因此,用户必须在同一网页上的其他文本区域中获取提取的文本。您的回答提示我解决此问题。给你。这是one-regex-solution。您的字符类应改为:['][^']*[']。管道|在字符类中没有任何意义,并且将在它们内部进行匹配。在正则表达式中不需要转义双引号。另外,匹配某个字符的最佳方法是使用否定字符类,或[^]表示匹配除引号外的任何内容。
var delete_tags = delete_start_of_link_tag.replace(/".*/gi, "");