一、正则表达式
1.1、 自己对正则表达式的认识
字面意思理解
- (有规则的表达式)(regular Expression)(regex)(RE)
个人理解
- 字符串————(比喻成一堆刚收好的稻谷)
- 字符串的方法 match等 ————(比喻成筛选工具)
- 正则表达式————(比喻成这这个筛选工具的孔的大小)
- 得到的结果————(就是已经筛选过的稻谷)
- 稻谷筛选的合不合格,取决于工具的孔是否合适,孔过大就会把渣子筛进去了,孔太小又会筛不出稻谷来。
二、如何使用正则表达式
- 第一步:先准备一堆未经过筛选的稻谷 ————定义字符串并初始化
var str = '(:match_product_num-1)*30'
- 第二步:想要得到什么样品质的稻谷———— 想要得到一个表达式(match_product_num-1)*30
- 第三步:准备好使用的工具并分析选择怎样合适的孔去筛选————选择工具
- 思考一:怎样将孔安装到筛子上面?
- 思考二:使用这些工具筛选过后的结果到底是什么?仅仅是一堆除去渣滓的稻谷,还是已经将大米已经去壳筛选出来了?
工具代表 test()、search()、replace()、match()、split()
2.1、工具介绍
test()
正则表达式.test(str)
- 功能:在字符串中查找符合正则的内容,
- 返回结果:true——找到符合正则的内容
- 返回结果:false——没有找到符合正则的内容
根据返回结果可以利用test()方法来做为判断条件
var str = '374829348791';
var re = /\D/; // \D代表非数字
if ( re.test(str) ) {
// 返回true,代表在字符串中找到了非数字。
console.log('不全是数字');
} else {
console.log('全是数字');
}
search()
字符串.search(正则表达式)
- 功能:在字符串中查找符合正则的内容,
- 返回结果:返回出现的位置(从0开始,如果匹配的不只是一个字母,那只会返回第一个字母的位置)
- 返回结果:-1 ——搜索失败
根据返回结果可以利用search()方法来查找某一个字符在字符串中的位置
var str = 'abcdef';
// i——ignore(正则中默认是区分大小写的
// 如果不区分大小写的话,在正则的最后加标识 i )
var re = /B/i;
console.log( str.search(re) );
match()
字符串.match(正则表达式)
- 功能:在字符串中查找符合正则的内容,
- 返回结果:数组——搜索成功返回搜索的内容
- 返回结果:null ——搜索失败
例子:在下列字符串中找出指定格式的所有数字,如下找到 123,54,33,879
var str = 'haj123sdk54hask33dkhalsd879';
var re = /\d+/g;
var result = str.match(re)
console.log (result)
// [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){
console.log(str); // 北京 天安门 天安门
var result = '';
for(var i=0;i<str.length;i++){
result += '*';
}
return result; //所以搜索到了几个字就返回几个*
});
console.log (str2)
//我爱*****,***上太阳升