简单的说一下背景,看到小伙伴给我发的项目中有一段获取当前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