有的時候,咱們在項目中會遇到這種需求,提取字符串中特定的某一部分,譬如咱們向後端請求數據,獲得圖片的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