量词:
- n+ == {1,∞}
n* == {0,∞}
图片.png
str='abc'
str.match(/\d*/g)
//=>[" "," "," "," "]
图片.png
光标位
- n? === {0,1}
//=>["a","a","a",...," "]- n{x} //==> x个
n{x,y}//=>x-y个
图片.png- n{x,∞}//=>x,
=>匹配的是x个位放一起输出
图片.png
以什么开头和结尾
var strrt='1asd3';//=>首尾是否还有数字
var regt=/^(\d)|(\d)$/g
console.log(strrt.match(regt));
console.log(regt.test(strrt));
首尾都含有数字
//=>都有呢?
var regta=/^\d[\s\S]*\d$/g //=>当然可以是[任何一个区间]
console.log(regta.test(strrt));
RegExp 对象属性
图片.png
正则表达式是个规则对象,可以去验证
图片.png
源文本,内容.png
source.png
RegExp 对象方法
图片.png
重点:exec游标 lastIndex
clog.png
图片.png
图片.png
图片.png
表达式篇:() 反向引用,子表达式(\x)\1 反向引用第一个(\x)的值
图片.png
多个1的话,取决于写在一起的个数
图片.png
图片.png
var str1='aabb';
var reg1=/(\w)\1(\w)\2/g; //=>aabb
console.log(str1.match(reg1));
console.log(reg1.exec(str1));
方法篇:
注意match()
图片.png
图片.png
图片.png
匹配到和没匹配到返回值-1 和 匹配到位置 search
split()
图片.png
replace():没有访问全局
图片.png
图片.png
图片.png
//=>replace()
var strrp='aabb';
var regrp=/(\w)\1(\w)\2/g;
console.log(strrp.replace(regrp,'$2$2$1$1'));
图片.png
var strrp='aabb';
var regrp=/(\w)\1(\w)\2/g;
console.log(strrp.replace(regrp,function ($,$1,$2){
return $2+$2+$1+$1;
}));
//=>第一个是全局$ 第二个是子表达式 你这里有两个\2
既然这样我们就可传一个function去匹配一些逻辑上的操作
//=>第一个是全局$ 第二个是子表达式 你这里有两个\2
var thefir='the-first-name';//=>theFirstName
var regth=/-(\w)/g;
console.log(thefir.replace(regth,function($,$1){
return $1.toUpperCase();
}));
// (子表达式) 可以用于$引用
图片.png
注意这里匹配了两次,第一次的时候拿正则去匹配,到了第二次时,又执行function去配匹,换言之,1每次对应的是不同的,执行了两次,产生两个1
52分08秒正向预查,正向断言,好比是修饰条件,如果你需要找什么东西,如果找abaaaaaaa,找后面跟b的a,修饰条件
var str='abaaaaaa';
var reg=/a(?=b)/g;//=>代表b不参与选择,只参与修饰,描述
clog(str.match(reg)) //=>['a']
非正向预查
reg=/a(?!b)/g;
clog(str.match(reg)) //=>['a','a','a','a','a','a']
图片.png
试题: 求其100000000 //=>每3位断点 100.000.000
var str='10000000000'; //=>10.000.000.000
var reg=/(?=(\B)(\d{3})+$)/g;console.log(str.replace(reg,'.'));
//=>1. 从后往前查,三个位数个数字 (\d{3})
//=>2. 多位 (\d{3})+
//=>3. ?=正向断言,意思是把中间的空,以空开头 => 带有非单词边界的三位数字个
//=>3. / () =>/空
网友评论