js中正则表达式的常用方法
2018-02-05 本文已影响4人
cyuamber
前言
工作中发现,正则表达式实在是很重要,对于FEer来说,正则表达式的使用代表了一个人的基本功。之前每次用每次查,搞得很混乱,现在查了一些资料,对js中常用的正则用法做了一定程度的总结。
JS中正则表达式的常见用法
- test():
在字符串中查找符合正则的内容,若查找到返回true,反之返回false.
用法::正则.test(字符串)
var str = '374829348791';
var re = /\D/; // \D代表非数字,采用非全局匹配
if( re.test(str) ){ // 返回true,代表在字符串中找到了非数字,搜索停止
console.log('不全是数字');
}else{
console.log('全是数字');
}
- search():
在字符串搜索符合正则的内容,搜索到就返回出现的位置(从0开始,如果匹配的不只是一个字母,那只会返回第一个字母的位置), 如果搜索失败就返回 -1
用法::字符串.search(正则)
var str = 'abcdef';
var re = /B/i;
//var re = new RegExp('B','i'); 也可以这样写
console.log( str.search(re) ); // 1
- match():
在字符串中搜索符合规则的内容,搜索成功就返回内容,格式为数组,失败就返回null。
用法::字符串.match(正则)
var str = 'haj123sdk54hask33dkhalsd879';
var re = /\d+/g; // 每次匹配至少一个数字,且全局匹配。如果不是全局匹配,当找到数字123,它就会停止了,只会弹出123。
console.log( str.match(re) ); // [123,54,33,879]
- replace():
查找符合正则的字符串,就替换成对应的字符串。返回替换后的内容。
用法::字符串.replace(正则,新的字符串/回调函数)
var str = "我爱北京天安门,天安门上太阳升。";
var re = /北京|天安门/g; // 找到北京 或者天安门 全局匹配
var str2 = str.replace(re,'*');
console.log(str2) //我爱**,*上太阳升
//这种只是把找到的变成了一个*,并不能几个字就对应几个*。
var str = "我爱北京天安门,天安门上太阳升。";
var re = /北京|天安门/g; // 找到北京 或者天安门 全局匹配
var str2 = str.replace(re,function(str){
//用来测试:函数的第一个参数代表每次搜索到的符合正则的字符,所以第一次str指的是北京 第二次str是天 安门 第三次str是天安门
var result = '';
for(var i=0;i<str.length;i++){
result += '*’; //搜索到了几个字就返回几个*
}
return result;
});
console.log(str2) //我爱*****,***上太阳升