从js从字符串取链接url("http://127.0.0.1:8080/watermark/6.png"),最好方法?

从js从字符串取链接 url("http://127.0.0.1:8080/watermark/6.png"), 最好方法?

阅读 1.9k
6 个回答
str = 'url("http://127.0.0.1:8080/watermark/6.png")'
console.log(str.slice(5,-2), '固定串')

regexp = /(https?):\/\/(([^:\/\?#]*)(?::([0-9]+))?)(\/[^\/\?#"]*)*\/?(\?[^#]*)?(#.*)?/g

console.log(str.match(regexp), '正则')

看了楼上好像是我理解有问题,hhhhh,那就正则吧

本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。

可以使用正则表达式提取,例如

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏