• 附录10-JS正则


    目录

    1  正则字符串内容

    1.1  竖杠

    1.2  括号

    1.2.1  基本使用

    1.2.2  数字表示括号

    1.2.3  部分方法中代替括号

    1.2.4  不记录组

    1.2.5  给组起名

    1.3  中括号

    1.3.1  基本用法

    1.3.2  横杠

    1.4  点

    1.5  加号

    1.6  星号

    1.7  尖号

    1.7.1  开头标志

    1.7.2  取反

    1.8  美元符号

    1.8.1  字符结尾

    1.8.2  匹配内容前方,后方与本身

    1.9  大括号

    1.10  问号

    1.10.1  0个或一个

    1.10.2  禁止贪婪

    1.11  右斜杠

    1.11.1  将特殊字符转义为普通字符

    1.11.2  数字

    1.11.3  除了数字以外的所有字符

    1.11.4  空白

    1.11.5  除了空白以外的所有字符

    1.11.6  字母,数字,下划线

    1.11.7  除了字母,数字,下划线的所有字符

    2  匹配模式

    2.1  全局模式 g

    2.2  不区分大小写模式 i

    2.3  单行模式 s

    2.4  字符属性模式

    2.5  其他不常用的模式

    3  断言匹配

    3.1  确定后面是什么的断言匹配

    3.2  确定前面是什么的断言匹配

    3.3  后面不是什么的断言匹配

    3.4  前面不是什么的断言匹配


    1  正则字符串内容

    1.1  竖杠

    竖杠|表示 或 的意思

    找到hello中的所有e和o

    1.2  括号

    1.2.1  基本使用

    括号表示分组的意思,学名叫原子组,我们先看个例子

    如果没分组的话就是 010 或 020\-\d{7,9}

    • -\d{7,9}是后面有一个横杠然后接7-9个数字

    如果加了分组就是在字符串中 含有010或020,然后后面接一个横杠然后接7-9个数字

    这样就是false了

    1.2.2  数字表示括号

    我们用\数字可以替代第几个括号

    • 上面的\1就代表h[1-6]

    这样就可以匹配到上面的三个标题标签了

    如果不进行全局搜索,结果会包含括号中的内容

    1.2.3  部分方法中代替括号

    在部分方法中也可以用$数字来代表第几组括号,比如下面把所有的h标签替换成p标签

    如果使用函数可以传递自定义参数,自定义参数依次就是这些

    第一个是完全找到的字符,之后是括号中的字符,之后是索引,然后是输入内容

    我没有给返回值所以页面上显示的是undefined

    给返回值就好了

    会出现括号套括号的情况,你的索引情况是,外层的括号在前面,内层的括号在后面,比如下面这种情况就是 红括号索引<绿括号索引<蓝括号索引

    1.2.4  不记录组

    可以在括号内的最前部加上?: 表示不记录哪一组

    但是在这个例子中不可以不记录第一组

    1.2.5  给组起名

    ?<名称>命名,$<名称>调用

    这样就会将匹配的内容换成第二个l

    如果使用match方法会在结果中的group属性看到命名的组

    1.3  中括号

    1.3.1  基本用法

    中括号内无论写多少内容都代表一个字符,中括号内所有字符呈 或 的关系

    下面这个例子是在 192695348 找到 123456 中的任何一个字符

    中括号中的特殊字符只表示其本身的意思

    1.3.2  横杠

    横杠表示跨度,横杠常于中括号配合,比如[A-Z]就是大写字母,[0-9]就是所有数字

    • 只能升序写,比如[9-0]这样写是无效的

    如果要匹配数字或小写字母可以这样写 [0-9a-z]

    1.4  点

    点可以代表除换行外的任意字符

    1.5  加号

    加号可以表示加号前的一个字符重复一次或多次

    我们把l+看做一个整体

    1.6  星号

    星号可以表示星号前的一个字符重复0次或多次

    我们把3*看做一个整体

    1.7  尖号

    1.7.1  开头标志

    尖号表示以下一个字符为开始的字符

    如果不加尖号就是查询字符串中有没有123

    如果加了尖号则代表必须以123开头,结果才能为true

    如果尖号在中括号中是取非的意思,下面这个例子就是除了123的所有字符

    1.7.2  取反

    在中括号内如果加上尖号表示取反

    如果不加尖号表示找到所有的l,如果加上尖号表示找到除了l的所有字符

    1.8  美元符号

    1.8.1  字符结尾

    $符号表示必须以$前的字符结尾

    如果123不在结尾就会返回false

    1.8.2  匹配内容前方,后方与本身

    用$`来代替匹配内容前面的内容,$'来替代匹配内容后面的内容,\$&来匹配内容本身的内容

    • `是ESC下面的按键,'是单引号

    匹配到第一个l,将第一个l替换为 $&(本身)+哈哈哈

    匹配到第一个l,将第一个l替换为$`(第一个l之前的内容,也就是he)+哈哈哈

    匹配到第一个l,将第一个l替换为$'(第一个l之后的内容,也就是lo)+哈哈哈

    1.9  大括号

    大括号表示后面跟几个上一个类型的

    比如下面检测字符串中,字符b到字符末尾,是否只存在3-5个数字

    如果多加了几个数字就为false

    大括号一般不在最后写,如果在最后写就表明字符b的后面有没有3-5个数字,如果数字比5个多也会判断为true

    如果比3个少就是false了

    可以不给逗号及逗号后面值,让其匹配固定个数

    如果使用match会按照你给的最大数量进行匹配,在下面这个例子中并不会只匹配一个就停止

    逗号后面可以不给值,不给值在这个例子中就表示一个到无数个

    1.10  问号

    1.10.1  0个或一个

    问号表示前面的字符可以有也可以没有(0个或1个)

    比如我现在有两个url,一个是http协议,一个是https协议,这两种协议我们都能接收,所以就可以这样写

    1.10.2  禁止贪婪

    默认情况下会尽可能多的进行匹配

    就是你写3到6个,它会给你匹配6个而不是匹配3个

    在表示范围的后面加一个问号就只会匹配3个而不是匹配6个

    除了大括号,星号,加号这种表示数量的符号加上问号后都会尽可能少的匹配

    1.11  右斜杠

    右斜杠代表转义字符

    1.11.1  将特殊字符转义为普通字符

    比如我想找到(1234)中的括号,这个时候就得在括号前加一个右斜杠

    1.11.2  数字

    \d代表数字

    1.11.3  除了数字以外的所有字符

    \D代表除了数字以外的所有字符

    1.11.4  空白

    用\s表示空白。空格,制表符,换行符都算是空白

    123后面我敲了一个tab,345后面我敲了两个空格

    1.11.5  除了空白以外的所有字符

    用\S表示除了空白以外的所有字符。空格,制表符,换行符都算是空白

    1.11.6  字母,数字,下划线

    用\w表示字母,数字,下划线

    1.11.7  除了字母,数字,下划线的所有字符

    用\W表示除了字母,数字,下划线的所有字符

    2  匹配模式

    匹配的模式可以混着用,也可以单独用

    2.1  全局模式 g

    现在我们想找到字符串里的所有数字,那么像下面这样写就只会找到第一个数字

    在正则的内容最后加上g可以进行全局搜索

    这样就可以找到所有要找的字符了

    2.2  不区分大小写模式 i

    如果不添加i只能找到指定的字符

    如果添加了i就是不区分大小写

    2.3  单行模式 s

    点是不能匹配换行符的,使用单行模式就会将换行符当成一个普通的字符进行匹配

    2.4  字符属性模式

    我做个例子

    这里面要替换的只有大括号中的L,具体换成什么可以参考这个 正则表达式系列之 —— Unicode:修饰符 "u" 和类 \p{...}_LeviDing的博客-CSDN博客

    有几个常用的

    • 中英文 L
    • 标点符号 P
    • 中文 sc='Han'

    还有就是宽字符的时候需要用到u

    2.5  其他不常用的模式

    • m 每一行单独处理
    • y 发现不对就从头开始模式,在上面的exec中介绍过

    3  断言匹配

    3.1  确定后面是什么的断言匹配

    我们现在想找到l后紧跟一个d的l

    3.2  确定前面是什么的断言匹配

    我们想找到hello world中前面是r的l

    • 注意(?<=r)要写在前面不要写在后面

    3.3  后面不是什么的断言匹配

    我们现在想找到后面不是空格的o字符

    3.4  前面不是什么的断言匹配

    我们现在找前面不是l的o

  • 相关阅读:
    iPhone 如何强制重启
    【Java】抽象类案例
    docker-compose构建
    SpringBoot请求参数与响应返回值,ResponseEntity<T>自定义响应
    一篇文章带你了解Python常用自动化测试框架 —— Pytest
    NodeJS 防止xss攻击
    AIDL的工作原理与使用示例 跨进程通信 远程方法调用RPC
    [附源码]java毕业设计小锅米线点餐管理系统
    Java统计指定目录下文件夹数量和内部文件的数量并导出
    12. Java异常及异常处理处理
  • 原文地址:https://blog.csdn.net/potato123232/article/details/127982088