找到包含特定字符串的所有网址

时间:2018-05-09 20:31:44

标签: regex

我下面有一些字符串。我需要一个正则表达式字符串匹配所有网址与域名中的特定字符串。在示例字符串中,我想匹配所有网址"示例"域名,无论其点扩展名如何。

示例字符串

    http://example.net/file/25404c920e2a5501fbb660ba1c093e59 http://notexample.com/view/858BA4159ED9B53
  <br>https://example.com/file/08558aa484fb1327d215fc6ce19da601/Transform.html
  <b>http://notexample.com/view/567</b>

2 个答案:

答案 0 :(得分:1)

首先看,你的.innerHtml应该是.innerHTML。大写HTML,然后.match将正常工作。这将返回与正则表达式匹配的所有内容的数组。

然后我们循环使用.includes方法查找包含您尝试在网址中找到的内容的任何网址。

请注意,.includes会找到任何包含您指定内容的字符串,所以即使您的示例中也包含“注意事项”。也将返回到最后一个数组。如果您更改了&#39; notexample&#39;对于那些不包含&#39;示例&#39;的东西,它应该可以正常工作。

const urlRegex = new RegExp(`((https?|):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])`, 'ig');

const urls = document.querySelector('div').innerHTML.match(urlRegex);

let selectedURLs = []

for (let i = 0; i < urls.length; i++) {
  if (urls[i].includes('example')) {
       selectedURLs.push(urls[i])
  }
}

console.log(selectedURLs)

答案 1 :(得分:0)

很难理解你在这里问的是什么,但我会尽力给你。您似乎正在尝试使用Javascript解析URL,如果是这样this post提供了执行此操作的功能。您可以通过URL正则表达式传递字符串,以验证它们是否是有效的URL,然后再使用它来解析它们。

示例:

var l = getLocation("http://example.com/path");
console.debug(l.hostname)
>> "example.com"
console.debug(l.pathname)
>> "/path"