Js-正则表达式学习(4)Tips小结

1.n$

      n$作用是以n单位字符串为结尾,可以明确的是单个字符n,也可以是一个单位字符串,比如(ab\w)$

2.(n)\1(b)\2  正向引用(需要括号)

    \1~\n可以作为,n和b的引用,注意,n和b都需要使用()括起来,用带括号的才能被引用,n和n和上一条一样,也是单个字符或者单位字符串

var str = "AABCD";
var regexp = /(\w)\1/g;
var res = str.match(regexp);
console.log(res);//['AA']

3.$1$2    分组反向引用(需要括号)

    用()扩起来的为一个组,$1~$n可以作为当前RegExp的匹配分组的各个引用,例子中ABD被引用了,但由于\w没有使用(),所以不算引用

var str = "ABCD";
var regexp = /(A)(B)\w(D)/g;
var res = str.replace(regexp,"$3");
console.log(res);//D
console.log(RegExp.$1);//A
console.log(RegExp.$2);//B
console.log(RegExp.$3);//D

4.[\s\S] ,[\w\W],[\d\D]表示所有字符

5.lastIndex 和 regexp.exec(str);可以逐步查看匹配项

var str = "123Li456LI789";
var regexp = /Li/ig;
console.log(regexp.lastIndex);//0
console.log(regexp.exec(str));//[ 'Li', index: 3, input: '123Li456LI789', groups: undefined ]
console.log(regexp.lastIndex);//5
console.log(regexp.exec(str));//[ 'LI', index: 8, input: '123Li456LI789', groups: undefined ]
console.log(regexp.lastIndex);//10
console.log(regexp.exec(str));//null

6.str.replace的使用

一般使用str.replace(str,str1);只是一次替换,不能全局替换

正则使用str.replace(regexp,str);虽然正则,但是不能调配或者使用正则中的引用

正则加函数使用 str.replace(regexp,($1~$n)=>{return out});

var str = "123Li456lI789";
var regexp = /(l)(i)/ig;
var res = str.replace("Li", "LI");//一般使用
str.match(regexp);
console.log(res);//123LI456lI789 
res = str.replace(regexp, "LI");//正则使用,可以替换两个Li
console.log(res);//123LI456LI789 
res = str.replace(regexp, function () {
    console.log(arguments[0]);//“Li”匹配的字符串
    console.log(arguments[1]);//L第一个引用
    console.log(arguments[2]);//i第二个引用
    console.log(arguments[3]);//3最后一个引用的下一个
    var temp = arguments[1].toLowerCase();
    return temp + arguments[2];
}
);
console.log(res);//123li456lI789
//正则使用,可以动态任意修改匹配的内容

7.限定某个字符串只能由什么组成,使用/^n$/g

例子:用户名只 能用 中文、英文、数字、下划线、4-16个字符。

var reg = /^[\u4E00-\u9FA5\w]{4,16}$/g;
var res = str.match(reg);

8.可变参数创建regexp时,可以使用new RegExp(param,)的方式;

当创建一个固定reg时,可以使用/n/igm的方式,但是n是参数名时,无法代表参数的值,比如一个参数名为_str,

创建时/_str/g;此时的_str只是字符串?"_str"的意思,可以使用var reg = new RegExp(_str,"g");的方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值