正则表达式

正则表达式:

作用:
    1)验证某个字符串是否符合某个规则    验证
    2)从一个字符串中获取符合某个规则的子串  捕获
语法:
    正则也是表达式,在这个表达式使用了特定的符号,我们需要学习一堆的符号
创建正则有两种方式:
    1)字面量创建  let reg = /abc/;
        不能进行拼接
        写元字符时 \x
    2)使用new的形式创建正则  let reg = new RegExp("hello");
        能进行拼接
        写元字符时 \\x

正则表达式中有两个核心方法:

 1)test  验证   验证我们的字符串是否符合正则表达式这个规则
        语法:reg.test(你要检测的字符串);
        返回值:一个是布尔类型  true符合规则   false不符合规则
 2)exec  捕获  从一个字符串中获取符合我们规则的一个字串
        语法:reg.exec(你要捕获的字符串);
        返回值:
            null:如果我要捕获的字符串在原始字符串中没有出现,那么返回null
            数组:[0] 就是捕获到的片段
                不管你有多个少片段,都是是捕获第一个片段
                不管你捕获多少次,也都是捕获第一个片段
                .....

正则的贪婪性和非贪婪性:

贪婪性:
    当我们给一个符号使用限定符的时,在捕获时,他会尽可能多的捕获
    内容,我们叫这个特性为贪婪性。
非贪婪性:
    如何把贪婪性变成非贪婪性,所谓的非贪婪性,就是指尽可能少的捕获。
    在写限定符时,在后面加一个?  就会把贪婪性变成非贪婪性

正则中与字符串操作相关的方法:

1)search
        语法:
            str.search("子串")
            str.search(正则表达式)
        返回值:
            返回找到子串对应的索引
            如果找不到,找回-1
    2)replace
        语法:
            str.replace(字符串,要替换的内容)
            str.replace(正则表达式,要替换的内容)
        返回值:
            只能返回第1相查找到的内容,返回替换好的字符串
            如果你想进行全局替换,需要加上一个g,g就表示全局替换
    3)match
        语法:
            str.match(字符串)
            str.search(正则表达式)
        返回值:
            捕获到一个代码片段,返回格式和exec一模样
            如果你想进行全局捕获,需要加上一个g

正则表达式的标识符:

    是写在正则表达式的外面,是用来修饰整个正则表达式的
    常用的有三个:
       1) i  忽略大小写
       2) g  全局匹配  
            如果不加g 每一次捕获只会捕获第1个
            加了g,第1次捕获,捕获第1个,第2次捕获,就会捕获第2个....
            如果捕获不到,返回null
        3)y  粘性全局
    语法:/abc/igy

小练习

在这里插入图片描述

1)基础元字符

元字符注释
\s表示一个空格
\S表示一个非空格
\t表示一个制表符(Tab)
\d表示一个数字
\D表示一个非数字
\w表示一个 数字字母下划线 表示 数字 字母 下划线 三选一就OK
\W表示一个 非 数字字母下划线 表示 数字 字母 下划线 以外的任意字符就OK
. (点)表示非换行的任意字符
\表示转义 就是转变原来的意思 n 表示字母n \n 就表示换行

2)边界元字符

元字符注释
^表示字符串的开始
$表示字符串的结束
^\d以数字打头
\d$以数字结束
^\d$以数字打头 以数字结尾

3)限定元字符

元字符注释
*表示出现0~到多次
+表示出现1~到多次
?表示出现0次或1次
{n}表示出现n次
{n,}表示出现n次或多次
{0, }等价于 *
{1, }等价于 +
{n,m }表示出现n次到m次
{ 0, 1 }等价于 ?

4)特殊符号

元字符注释
()表示一个整体;单独捕获
(?:)整体匹配,但是不捕获,只是标识一个整体,但是捕获时并不会单独捕获出来
I表示或,大部分情况下,它会和()连用,表示一个整体
[]表示里面的任意一个字符都可以 ;等价于 \s
[^]表示里面的任意一个都不行;等价于 \S
-表示 到 从如个字符到哪个字符 前提是它的在ASCII码中是连着的
[0-9a-zA-Z_]等价于 \w
[^0-9a-zA-Z_]等价于 \W
[0-9]等价于 \d
[^0-9]等价于 \D

5)正则表达式的标识符

语法注释
i忽略大小写
g全局匹配;加了g,第1次捕获,捕获第1个,第2次捕获,就会捕获第2个…如果捕获不到,返回null
y粘性全局

6)正则表达式的标识符

语法注释
?=正向肯定预查 (当我们去捕获一个内容时,后面必须跟着我们选择的一个内容才行)
?!正向否定预查 (当我们去捕获一个内容时,后面必须跟着不是我们选择的一个内容才行)
?<=负向肯定预查(当我们去捕获一个内容时,前面必须跟着我们选择的一个内容才行)
?<!负向否定预查(当我们去捕获一个内容时,前面必须跟着我们选择的一个内容才行 )

7)重复出现

语法注释
\num
\1表示\1这个位置的内容必须和第1个小括号中的内容一模一样
\2表示\2这个位置的内容必须和第2个小括号中的内容一模一样
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值