JS---正则表达式01

一、语法

正则表达式是一种微型语言。正则表达式创建有两种,一种字面量创建 一种是实例化创建

let reg= / 正则内容(a) / 修饰符 (g)

 正则表达式创建有两种,一种字面量创建 一种是实例化创建

1.字面量创建------是最简便的方式

let reg=/a/g;

2.实例化创建------可以创建具有变量的正则表达式

let reg1=new RegExp("a","g")

二、修饰符

用于区分大小写和全局匹配

修饰符

作用

i

不区分大小写

g

全局匹配

m

执行多行匹配

 示例代码:

        var str = "abAc";
        str = str.replace("a", "0")
        console.log(str);
        str = str.replace(/a/, "0")
        console.log(str);
        str = str.replace(/a/g, "0")
        console.log(str);
        str = str.replace(/a/gi, "0")
        console.log(str);

 结果如下:

三、正则表达式API----对象属性

 var reg=/a/gim;
test 判断当前字符串中是否有满足该正则的匹配内容 返回布尔值
console.log(reg.test("aa"));
在字符串中查找满足匹配正则表达式的内容,返回数组,数组有对应的属性
console.log(reg.exec("aa"));
console.log(reg.flags);//修饰符
console.log(reg.source);//正则内容
console.log(reg.global);//g   ---  判断是否设置了 "g" 修饰符
console.log(reg.ignoreCase);//i  --- 判断是否设置了 "i" 修饰符
console.log(reg.lastIndex);//最后一次查找的下标
console.log(reg.dotAll);
console.log(reg.multiline);//m  --判断是否设置了 "m" 修饰符
console.log(reg.sticky);//粘性
console.log(reg.unicode);//编码        

 

四、元字符

元字符 是拥有特殊含义的字符

元字符

描述

.

查找单个字符,除了换行和行结束符。

\w

查找数字、字母及下划线。

\W

查找非单词字符。

\d

查找数字。

\D

查找非数字字符。

\s

查找空白字符。

\S

查找非空白字符。

\b

匹配单词边界。

\B

匹配非单词边界。

\0

查找 NULL 字符。

\n

查找换行符。

\f

查找换页符。

\r

查找回车符。

\t

查找制表符。

\v

查找垂直制表符。

\xxx

查找以八进制数 xxx 规定的字符。

\xdd

查找以十六进制数 dd 规定的字符。

\uxxxx

查找以十六进制数 xxxx 规定的 Unicode 字符。

五、方括号

方括号用于查找某个范围内的字符

表达式

描述

[abc]

查找方括号之间的任何字符。

[^abc]

查找任何不在方括号之间的字符。

[0-9]

查找任何从 0 至 9 的数字。

[a-z]

查找任何从小写 a 到小写 z 的字符。

[A-Z]

查找任何从大写 A 到大写 Z 的字符。

[A-z]

查找任何从大写 A 到小写 z 的字符。

[adgk]

查找给定集合内的任何字符。

[^adgk]

查找给定集合外的任何字符。

(red|blue|green)

查找任何指定的选项。

 列举一些-------方括号和元字符表达相同含义

表达式                 元字符                 含义

/[a-zA-Z0-9_]/      \w                   小写字母大写字母数字下划线

/[^a-zA-Z0-9_]/    \W                   除了小写字母大写字母数字下划线

[0-9]                     \d                    代表所有数字

[^0-9]                   \D                    代表除了所有数字

       

[^ab] 在中括号的最前面使用了^ 代表除了[ ]上箭头后面的所有内容以外满足就可以了 不要ab

[^\^] 除了^ 以外的字符

[a^c] 如果^不在第一位则表示正常的^字符

六、量词

量词

描述

n+

匹配任何包含至少一个 n 的字符串。

例如,/a+/ 匹配 "candy" 中的 "a","caaaaaaandy" 中所有的 "a"。

n*

匹配任何包含零个或多个 n 的字符串。

例如,/bo*/ 匹配 "A ghost booooed" 中的 "boooo","A bird warbled" 中的 "b",但是不匹配 "A goat grunted"。

n?

匹配任何包含零个或一个 n 的字符串。

例如,/e?le?/ 匹配 "angel" 中的 "el","angle" 中的 "le"。

n{X}

匹配包含 X 个 n 的序列的字符串。

例如,/a{2}/ 不匹配 "candy," 中的 "a",但是匹配 "caandy," 中的两个 "a",且匹配 "caaandy." 中的前两个 "a"。

n{X,}

X 是一个正整数。前面的模式 n 连续出现至少 X 次时匹配。

例如,/a{2,}/ 不匹配 "candy" 中的 "a",但是匹配 "caandy" 和 "caaaaaaandy." 中所有的 "a"。

n{X,Y}

X 和 Y 为正整数。前面的模式 n 连续出现至少 X 次,至多 Y 次时匹配。

例如,/a{1,3}/ 不匹配 "cndy",匹配 "candy," 中的 "a","caandy," 中的两个 "a",匹配 "caaaaaaandy" 中的前面三个 "a"。注意,当匹配 "caaaaaaandy" 时,即使原始字符串拥有更多的 "a",匹配项也是 "aaa"。

n$

匹配任何结尾为 n 的字符串。

^n

匹配任何开头为 n 的字符串。

?=n

匹配任何其后紧接指定字符串 n 的字符串。

?!n

匹配任何其后没有紧接指定字符串 n 的字符串。

七、对象及方法

1.正则表达式本身有的方法

方法

描述

compile

在 1.5 版本中已废弃。

编译正则表达式。

exec

检索字符串中指定的值。返回找到的值,并确定其位置。

test

检索字符串中指定的值。返回 true 或 false。

toString

返回正则表达式的字符串。

 代码示例:

1.exec()

如果匹配失败,exec() 方法返回null,并将正则表达式的 lastIndex 重置为 0。

如果匹配成功,exec() 方法返回一个数组,并更新正则表达式对象的lastIndex属性。完全匹配成功的文本将作为返回数组的第一项,从第二项起,后续每项都对应一个匹配的捕获组。

 得到的数组还具有以下额外的属性:

        index: 匹配到的字符位于原始字符串的基于 0 的索引值。

        input:匹配的原始字符串。

        group:一个命名捕获组对象,其键是名称,值是捕获组。若没有定义命名捕获组,则 groups 的值为 undefined。

1.exec----在一个指定字符串中执行一个搜索匹配。返回一个结果数组或 null。
        //exec 和test使用全局查找时相同
        var reg = /a/g;
        console.log(reg.exec("cdabac"));//每调用一次该对象方法,就查找一次a
        console.log(reg.exec("cdabac"));
        //没有查找到返回null
        console.log(reg.exec("cdabac"));//最后一次没有查找到,就返回null

 

2.test()

如果正则表达式与指定的字符串匹配,返回true;否则false。

设置全局标志的正则,采用test()

当使用全局匹配时
        var reg = /a/g;

       在使用test匹配正则时,使用了全局匹配,第一次找到第一个满足条件的,
       并且将这个位置的下标记录在正则中。第二次匹配时根据上次记录的下标继续向后匹配查找
       直到查找不到返回false,则从下标0开始重新查找
        console.log(reg.test("cdabac"));
        console.log(reg.lastIndex);
        console.log(reg.test("cdabac"));
        console.log(reg.lastIndex);
        console.log(reg.test("cdabac"));
        console.log(reg.lastIndex);
        console.log(reg.test("cdabac"));
        console.log(reg.test("cdabac"));
        console.log(reg.test("cdabac"));
        //每次都会创建一个新的正则表达式查找
        console.log(/a/g.test("cdabac"));
        console.log(/a/g.test("cdabac"));
        console.log(/a/g.test("cdabac"));
        console.log(/a/g.test("cdabac"));
        console.log(/a/g.test("cdabac"));
        if (str === "a" || str === "b")
            /a|b/.test(str)

 

3.toString()

对象覆盖了 Object 对象的 toString() 方法,并没有继承 Object.prototype.toString()

对于 RegExp 对象,toString 方法返回一个该正则表达式的字符串形式。

2.字符串String的方法中可以使用正则表达式的 

方法

描述

search

检索与正则表达式相匹配的值。

match

找到一个或多个正则表达式的匹配。

matchAll

replace

替换与正则表达式匹配的子串。

replaceAll

split

把字符串分割为字符串数组。

示例代码:

1.search()

1.search 
        search 与indexOf类似
        如果匹配成功,则返回正则表达式在字符串中首次匹配的索引;否则,返回 -1。
        var str="abac";
        console.log(str.search("a"));
        console.log(str.search(/a/g));
        console.log(str.search(/a/g));

        var reg=/a/g;
        console.log(str.search(reg));

        var str="babd";
        console.log(str.search(/.a/g));
        console.log(str.search(/ac/g));

2.match()

2.str.match
        如果不使用g全局匹配类似于exec方法
        如果使用g全局匹配则会被所有匹配的结果放在一个数组中
        str = "abcacd";
        reg = /a../;
        reg1 = /a../g;
        console.log("abcacd".match(/a../));
        console.log("abcacd".match(/a../g));
        console.log(reg.exec(str));
        console.log(reg1.exec(str));

match结果:

exec结果:

 3.matchAll()

 console.log("abcacd".matchAll(/a../g));

3.str.matchAll
        matchAll返回一个迭代器,使用for of遍历这个迭代器可以看到多次使用exec的结果
        for(var value of "abcacd".matchAll(/a../g)){
            console.log(value);
        }

 

 4.replace()

4.replace
        var str = "abcacd";
        console.log(str.replace("a", "0"));
        console.log(str.replace(/a/, "0"));
        console.log(str.replace(/a/g, "0"));
        str = str.replace(/a../g, function(item, index, s) {
            // console.log(item,index,s);
            // return "0bc"
            // 如果下标是3返回”000“
            if (index === 3) return "000";
            // 否则返回原查找到字符
            return item;
        })
        console.log(str);

 

5.replaceAll()

5.replaceAll

       var str = "abac";
        str = str.replaceAll(/a./g, "a0");
        str = str.replaceAll(/a./g, function(item) {
            console.log(item);
        });
        str = str.replaceAll("a", "0")
        console.log(str);

 

6.split()

6.split
        var str="ab|cd|ef&aa&cc";
        console.log(str.split("|"));
        部分字符在正则表达式中有自己的含义,为了恢复这个字符串本身的字符需要再前面加上\ 转义
        1. \|   这个是字符 |    
        2. |    是或者的意思
        3. &    就是字符&
        console.log(str.split(/\||&/));

        var str="aca.ad";
        console.log(str.match(/a\./g));

 

7.删除字符串中空格

console.log(str.trim());//删除字符串前后空格
console.log(str.trimLeft());//删除字符串前空格
console.log(str.trimRight());//删除字符串前空格

八、结语

最近要被Js搞懵了,总结不易,留下你的脚步吧~

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值