吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1194|回复: 7
收起左侧

[求助] JS,正则表达式提取全部网址的问题

[复制链接]
cqwcns 发表于 2023-1-24 22:57
水平太菜,一直搞不懂正则表达式。
以下是富文本编辑器生成的HTML,其中可能会夹杂一些图片地址,我希望把全部的图片地址提取处理,放到一个数组中。
[HTML] 纯文本查看 复制代码
<h1>电话</h1><p>的汉人同化它的好帖</p><p>收到退货rtdsth</p><p>等富含人体h</p><p> </p><figure class="image"><img src="https://7765-kk-yy-1302668058.tcb.qcloud.la/notice/image/20230124/13553687299/1674571083349_OHR.GalileoMoons_ZH-CN0498325568_1920x1080.jpg"></figure><p>洞庭湖人太少hstrhsrth</p><p> </p><figure class="image"><img src="https://7765-kk-yy-1302668058.tcb.qcloud.la/notice/image/20230124/13553687299/1674571113655_be6e7ee47196117d743e38015197ecdf924d2ec4bc0fbff5d69ec24b67b828c2.jpg"></figure><p>石头人和</p>

提取条件大概就是:<img src="要提取的内容">
希望的结果是这样的:
[JavaScript] 纯文本查看 复制代码
  arr = [
    "https://7765-kk-yy-1302668058.tcb.qcloud.la/notice/image/20230124/13553687299/1674571083349_OHR.GalileoMoons_ZH-CN0498325568_1920x1080.jpg",
    "https://7765-kk-yy-1302668058.tcb.qcloud.la/notice/image/20230124/13553687299/1674571113655_be6e7ee47196117d743e38015197ecdf924d2ec4bc0fbff5d69ec24b67b828c2.jpg"
  ];


网上查了一下,知道应该是用match方法,但试了几个写法,都不是想要的结果。


不知道应该怎么写才对,请各位大佬指教,感谢。


本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
石昊荒天帝 发表于 2023-1-25 00:04
提示: 作者被禁止或删除 内容自动屏蔽
kesai 发表于 2023-1-25 00:17
<img\s+src="([^"]+)">,捕捉$1,看看行不

免费评分

参与人数 1吾爱币 +1 收起 理由
cqwcns + 1 热心回复!

查看全部评分

ashley912 发表于 2023-1-25 01:25
xifangczy 发表于 2023-1-25 02:45
[JavaScript] 纯文本查看 复制代码
test.match(/(?<=img[^>]*src=")[^"]*/g)

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
cqwcns + 1 + 1 我很赞同!

查看全部评分

weixiao222 发表于 2023-1-25 05:06
python里我是这么干的。
[Python] 纯文本查看 复制代码
re.findall('<img src="(.*?)">', str)[0]

免费评分

参与人数 1吾爱币 +1 收起 理由
cqwcns + 1 谢谢@Thanks!

查看全部评分

笨笨家的唯一 发表于 2023-1-25 10:22
你试试这个
[JavaScript] 纯文本查看 复制代码
// str 就是你需要提取内容的原文
let str = `<h1>电话</h1><p>的汉人同化它的好帖</p><p>收到退货rtdsth</p><p>等富含人体h</p><p> </p><figure class="image"><img src="https://7765-kk-yy-1302668058.tcb.qcloud.la/notice/image/20230124/13553687299/1674571083349_OHR.GalileoMoons_ZH-CN0498325568_1920x1080.jpg"></figure><p>洞庭湖人太少hstrhsrth</p><p> </p><figure class="image"><img src="https://7765-kk-yy-1302668058.tcb.qcloud.la/notice/image/20230124/13553687299/1674571113655_be6e7ee47196117d743e38015197ecdf924d2ec4bc0fbff5d69ec24b67b828c2.jpg"></figure><p>石头人和</p>`;
// arr 用来保存提取的结果
let arr = []
// 正则匹配表达式,你要提取的内容就在括号里面
let reg = /<img src="(.*?)"/ig
// 在字符串中查找所有符合正则表达式的字符串,生成一个迭代器(你不用管迭代器是啥)
let result = str.matchAll(reg);
// 循环迭代器,获取数据
for (const res of result) {
    // res 就是迭代器中的每一个元素
    console.log(res)
    // res[1] 表示的是正则中第一个括号内的内容,也就是你要的内容
    console.log(res[1])
//    压进数组进行保存
    arr.push(res[1])
}
// 输出给你看,到此就保存完了
console.log(arr)

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
cqwcns + 1 + 1 谢谢@Thanks!

查看全部评分

hollsovan 发表于 2023-1-25 12:16
零宽断言的应用,5楼[^"]*用的很巧妙

[JavaScript] 纯文本查看 复制代码
    
let x = '<h1>电话</h1><p>的汉人同化它的好帖</p><p>收到退货rtdsth</p><p>等富含人体h</p><p> </p><figure class="image"><img src="https://7765-kk-yy-1302668058.tcb.qcloud.la/notice/image/20230124/13553687299/1674571083349_OHR.GalileoMoons_ZH-CN0498325568_1920x1080.jpg"></figure><p>洞庭湖人太少hstrhsrth</p><p> </p><figure class="image"><img src="https://7765-kk-yy-1302668058.tcb.qcloud.la/notice/image/20230124/13553687299/1674571113655_be6e7ee47196117d743e38015197ecdf924d2ec4bc0fbff5d69ec24b67b828c2.jpg"></figure><p>石头人和</p>'
result = x.match(/(?<=img src=").*?(?=")/g);
 // 输出结果
[...result].map(i => console.log(i))


总结就是提取a和b之间的内容,用(?<=a).*?(?=b)

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
cqwcns + 1 + 1 谢谢@Thanks!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 01:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表