Javascript中字符串的URL提取

Javascript中字符串的URL提取,javascript,string,Javascript,String,我正在从服务中获取原始HTML数据,需要从字符串中提取URL。具体来说,HTML中有一个URL字符串所在的部分,它是一个名为“数据URL”的参数。有没有一种方法可以在“数据URL”之后立即提取URL。下面是一个例子: let html_str = '<div class="tv-focusable" id="tv_web_answer_source" tabindex="-1" data-url="https://apple.stackexchange.com/questions/3231

我正在从服务中获取原始HTML数据,需要从字符串中提取URL。具体来说,HTML中有一个URL字符串所在的部分,它是一个名为“数据URL”的参数。有没有一种方法可以在“数据URL”之后立即提取URL。下面是一个例子:

let html_str = '<div class="tv-focusable" id="tv_web_answer_source" tabindex="-1" data-url="https://apple.stackexchange.com/questions/323174/does-the-iphone-8-have-any-sort-of-water-resistance-or-waterproof-manufacturing" onclick="onUrlClick(this)">'
让html_str=''
我只需要剥离域并存储它。

也许可以使用

url = s.split("data-url=|\" ")[1];
只需使用getAttribute

document.getElementById('tv\u web\u answer\u source').getAttribute('data-url')

更好的方法是使用
数据集
(因为您想要的属性以
数据-
开头)

document.getElementById('tv\u web\u answer\u source').dataset.url


您可以使用
新URL(文本)
从字符串创建
URL
对象,并获取该对象的
主机名。剩下的就是选择如何从html中提取url

使用正则表达式

var html='';

console.log(新URL(html.match(/data URL=“([^”]*)”/)[1]).hostname);
最简单的方法是使用DOM获取信息。将html字符串设置为新元素,选择它,然后使用dataset获取属性值

var div=document.createElement(“div”)
div.innerHTML=``
var str=div.querySelector(“[data url]”)。dataset.url
var host=新URL(str).hostname

console.log(主机,str)
JS有专门的功能来处理你的评论@epascarello@Arthur如果html的格式是
,这将不起作用。请更新epascarello和/或nick zoum的答案,它们都很好。我的答案没有考虑它是字符串而不是DOM元素。您不需要将html推入文档DOM中来使用它作为JS,您可以从中创建DOM元素document@Arthur我正在从
文档
对象创建一个
domeElement
。然后我正在设置
innerHtml
。这种方法更安全,因为它将与包含多个起始元素的
htmlText
一起工作。好的,我在想什么文档。createElement()正在将新元素推送到它上面。但它没有。因此我以前的注释没有必要这样做。这里的一个问题是,我的代码是一个节点服务器,因此没有文档对象。@LeeProbert在这种情况下,您可以使用regexp解决方案,该解决方案将适用于所有格式良好的url。或者,您可以使用一个节点库,如将文本转换为HTMLT。请澄清:I a“我正试图从字符串中提取URL。@HereticMonkey-uuz-,OP的意思是从字符串形式而非html形式的html文本中提取URL作为字符串。结构未知,因此我无法知道数据URL值将位于何处。在编辑之前,他们获取的字符串不是很清楚。还有其他问题需要解答。”g类似的问题,比如,但不幸的是,它们都集中在正则表达式上,所以我不会把它们标记为dupe…:)