学习正则(二)——进阶

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 个字符之间,并且必须至少包含一个数字。

在这里插入代码片
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章