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