整理一下最近常用的几个有关正则的js方法
replace
语法:stringObject.replace(regexp/substr,replacement)
用法1
const str='abc1314520def';
str.replace(/D/g,'');/*D非数字,g全局匹配,每个地方都匹配一次*/
结果:
'1314520'
用法2:
str.replace('abc','');/*直接用字符串匹配*/
结果:
'1314520def'
用法3:
str.replace(/D/g,function(rs){return rs.toUpperCase()})
结果:
'ABC1314520DEF'
/*第二个参数可传入函数,会对每个匹配到的字符串'rs'做一次处理,然后你可以将结果return 出来*/
进阶用法:将网址查询的search部分转化为键值对(就是url问号后面的东西)
function parseURL(url=window.location.href){/*es6语法直接设置默认值*/
const search = url.substr(url.indexOf('?')+1);
const obj={};
search.replace(/([^&=]+)=([^&=]*)/g,function(rs,$1,$2){
obj[decodeURIComponent($1)]=decodeURIComponent($2)
})
return obj
}
$1——$99就是匹配第1到第99个子表达式的文本,表达式1:'([^&=]+)',表达式2:'([^&=]*)'等等*/
/*这里我们没有用到rs 只是为了占位而已,因为第一个参数默认为rs*/