JS 正则提取字符串中特定的某一部分

有的时候,我们在项目中会遇到这种需求,提取字符串中特定的某一部分,譬如我们向后端请求数据,得到图片的URL数据,像这样"/resources/images/beauty.jpg",我们需要提取beauty.jpg这一部分,该怎么做呢?

今天和大家分享两个方法,一个是字符串对象的match(),还有正则对象的exec(); 这两种方法都可以实现这个功能

一.match(),使用正则表达式子表达式来提取目标字符串

let str = "/resources/images/beauty.jpg"
console.log(str.match(/.*\/.*\/(.*\..*/))
//结果是一个数组,第一项为整个正则表达式匹配结果,就是这个字符串,第二项就是子表达式的匹配结果
//[/resources/images/beauty.jpg,beauty.jpg]
let result = str.match(/.*\/.*\/(.*\..*/)
那么result[1]就是我们想要的结果,beauty.jpg
?
复制代码

不过这里要注意下,使用match()方法时,如果指定了全局模式,会忽略子表达式的提取,直接匹配整个表达式;我们想要的那部分会拿不到

二.exec(),这是个正则对象的方法

let str = "/resources/images/beauty.jpg"
console.log(/.*\/.*\/(.*\..*)/.exec(str))
//exec()方法返回一个数组,第一项为整个正则表达式匹配结果,就是这个字符串,第二项就是子表达式的匹配结果,和match()返回的结果是一样的
let result = /.*\/.*\/(.*\..*)/.exec(str),还是result[1],beauty.jpg
虽然结果一样,这两个方法其实还是有一些差别的,具体的可以自行百度,这个点并不是本文关注的点

复制代码

利用正则表达式提取特定字符串,核心点就在于子表达式的使用

转载于:https://juejin.im/post/5c55948a518825629d0740cb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值