正则表达下-2020-01-04

2020-01-04  本文已影响0人  增商
量词:
  • 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. / () =>/空
上一篇下一篇

猜你喜欢

热点阅读