有的时候,咱们在项目中会遇到这种需求,提取字符串中特定的某一部分,譬如咱们向后端请求数据,获得图片的URL数据,像这样"/resources/images/beauty.jpg",咱们须要提取beauty.jpg这一部分,该怎么作呢?正则表达式
今天和你们分享两个方法,一个是字符串对象的match(),还有正则对象的exec(); 这两种方法均可以实现这个功能后端
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()方法时,若是指定了全局模式,会忽略子表达式的提取,直接匹配整个表达式;咱们想要的那部分会拿不到数组
let str = "/resources/images/beauty.jpg"
console.log(/.*\/.*\/(.*\..*)/.exec(str))
//exec()方法返回一个数组,第一项为整个正则表达式匹配结果,就是这个字符串,第二项就是子表达式的匹配结果,和match()返回的结果是同样的
let result = /.*\/.*\/(.*\..*)/.exec(str),仍是result[1],beauty.jpg
虽然结果同样,这两个方法其实仍是有一些差异的,具体的能够自行百度,这个点并非本文关注的点
复制代码
利用正则表达式提取特定字符串,核心点就在于子表达式的使用bash