1、replace(searchValue,newValue)
2、子项
3、子项在match与exec方法中的使用 (下图补充:exec 使用g时,匹配的结果跟匹配的次数有关)
4、子项在replace方法中的使用
例如
var str = 'abc123def';
var re = /\d+/;
var newStr = str.replace(re,"$$");//将匹配结果替换成$
var newStr = str.replace(re,"$&789");//$& 引用匹配结果本身。abc123789def
var newStr = str.replace(re,"-$`000");//$& 引用匹配结果左边的内容。abc-abc000def
var re1 =/(\d)+/;
var newStr = str.replace(re1,"$1");//$1 引用第一个子项 abc3def
var re2 =/((\d)+)/;
var newStr = str.replace(re2,"$1");//abc123def
var newStr = str.replace(re2,"$1");//abc3def
例子:利用子项功能对日期的格式修改
var str ='2018-5-20';
var re = /(\d{4})-(\d{1,2}) (\d{1,2})/;
str.replace(re,"$2-$3 $1");
5、RegExp.$n
6、子项的反向引用
案例三:str =‘jfid2222e2222iji99999k9999jfjd’; 想要匹配出[2222e2222,99999k9999]
var re =/((\d)\2+)[a-z]\1/g
7、零宽断言
案例解答:var re1 =/\w+(?=2013)/;
8、非捕获分组
案例解答 : var re = /(col-)(?:xs-|md-)?(\d)/g;
9、命名捕获分组
案例解答:
var re =/(?<year>)\d{4})-(?<month>\d{1,2})-(?<day>\d{1,2})/
var newStr =str.replace(re,"$<month>-$<day> $<year>");
正则的学习就结束了,最后有一个思考题如图
补充几道面试题:
1、实现一个函数,输入为一个字母或数字’AABBCAZDFEH’组成的字符串,去重后按照原顺序输出新的字符串。(不能跳出页面编写代码)
var str = 'AABBCAZDFEH';
var reg = /([a-zA-Z])\1/g;
str.replace(reg,'$1');
2、对密码应用以下限制:其长度必须介于 4 到 8 个字符之间,并且必须至少包含一个数字。
在这里插入代码片