簡單的說一下背景,看到小夥伴給我發的項目中有一段獲取當前url特定query值的代碼,本着能寫1行代碼就不寫5行代碼的原則,我把這個獲取方法給改了一下javascript
以前的代碼以下:java
const queryArr = location.search.substring(1).split('&') let name = '' queryArr.forEach(item => { const _arr = item.split('=') if (_arr[0] === 'name') { name = _arr[1] } })
花了這麼大工夫就爲了拿到query中name字段的值,其實有更簡單的方法,一行代碼就能夠搞定正則表達式
咱們來看一下一行代碼怎麼拿到的數組
const name = location.search.match(/name=([^&]*)/)[1]
這裏介紹一次match方法,match方法返回一個數組,數組中索引0
爲正則表達式匹配到的所有字符;
好比這裏的字符串若是爲?name=xiaoming&id=123
,索引0
就爲'name=xiaoming'
;
0
之後的索引爲正則表達式匹配的組,即爲()內的內容,上面只有一個組就是([^&]*)
,因此直接拿到就是'小明'
,因此上面的代碼直接拿索引1
就是對應的name值;url
最後下班,又是充實的一天~~~code