从js从字符串取链接 url("http://127.0.0.1:8080/watermark/6.png")
, 最好方法?
从js从字符串取链接 url("http://127.0.0.1:8080/watermark/6.png")
, 最好方法?
可以使用正则表达式提取,例如
const str = '("http://127.0.0.1:8080/watermark/6.png")';
const regex = /['"](.*?)['"]/;
const result = str.match(regex)[1];
console.log(result); // http://127.0.0.1:8080/watermark/6.png
写个正则去匹配哇,现在有AI了,写正则就没有那么麻烦了:
// 匹配所有的 url(...) 字符串
function getUrl4Str(str) {
// 匹配 url(...) 的正则
var urlReg = /url\("([^"]+)"\)/g;
var matches = Array.from(str.matchAll(urlReg), m=>m[0])
return matches;
}
getUrl4Str('123123123123url("http://www.baidu.com")123123url("http://127.0.0.1:8080/watermark/6.png")123123url("http://www.baidu.com")123123213url("http://127.0.0.1/watermark/123123.png")')
// [
// 'url("http://www.baidu.com")',
// 'url("http://127.0.0.1:8080/watermark/6.png")',
// 'url("http://www.baidu.com")',
// 'url("http://127.0.0.1/watermark/123123.png")'
// ]
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
const str = 'url("http://127.0.0.1:8080/watermark/6.png")';
const url = str.match(/url\("(.+)"\)/)[1];
console.log(url); // "http://127.0.0.1:8080/watermark/6.png"
问下ai么,非常完美的解决你的问题。
// 可以使用正则表达式 /url\(["']?(.*?)["']?\)/g 来提取字符串中所有的 url()。
const str = 'background-image: url("http://example.com/image.jpg");background-image: url(\'http://example.com/another-image.jpg\');';
const regex = /url\(["']?(.*?)["']?\)/g;
const urls = [];
let match;
while (match = regex.exec(str)) {
urls.push(match[1]);
}
console.log(urls);
// Output: ["http://example.com/image.jpg", "http://example.com/another-image.jpg"]
// 解释一下正则表达式的含义:
// url\(:匹配 url(。
// ["']?:可选的单引号或双引号。
// (.*?):匹配任意字符,非贪婪模式。
// ["']?\):可选的单引号或双引号,后面跟着 )。
// g 标志表示全局匹配,可以匹配多个 url()。在循环中使用 // exec() 方法,每次匹配到一个 url(),把其中的 URL 存入数组中。最后输出数组即可。
// 提取'url("http://127.0.0.1:8080/watermark/6.png")'中的url
const getWatermarkUrl = (url) => {
return url.replace(/^url\("(.*)"\)$/, '$1')
}
来自vscode github copilot
27 回答13k 阅读
8 回答3.5k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
5 回答5.3k 阅读✓ 已解决
4 回答1.6k 阅读✓ 已解决
3 回答1.7k 阅读
4 回答2.3k 阅读✓ 已解决
看了楼上好像是我理解有问题,hhhhh,那就正则吧