• js正则表达式系统讲解(全面的总结)


    1.声明与使用

    • 通过构造函数定义(一般不这么干)
    let 变量名= new RegExp(/表达式/);
    
    • 1
    • 字面量直接定义(一般这么干)
    let 变量名= /表达式/;
    
    • 1
    • 常用方法(一般用于检测传入的字符串是否符合该规则并返回布尔值)
    exp.test("要检测的字符串")
    
    • 1

    2.预定义类与转义符

    • . [^\n\r] 除了换行和回车之外的任意字符
    • \d [0-9] 数字字符digit
    • \D [^0-9] 非数字字符
    • \w [a-zA-Z0-9_] 单词字符(所有的英文字母数字和_) word
    • \W [^a-zA-Z0-9_] 非单词字符
    • \s [\f\r\n\t\v] 不可见字符 space
    • \S [^\f\r\n\t\v] 可见字符
    • \f 表示换页 form feed
    • \t 表示水平制表符 table
    • \v 表示垂直制表符 vertical table
      在这里插入图片描述
    • \r,\n,\r\n的区别(顺便科普一下)
      在万恶的旧社会,打字机换行(\n newline)之后只会下移一行,需要回到一行的开头(\r return)才能继续打字
      老式的操作系统也继承了打字机的这一特性,但用户换行之后一般都是要回到开头的,因此新式的操作系统为了方便将键盘上的Enter键的含义修改为\r\n或者直接将\n的含义改为“移动到下一行的开头”。
    • | 表示或 或的优先级最低 可以通过()提升优先级

    3. 字符类

    • 简单类[abc] 表示该位置可以出现的字符
    • 负向类[^abc] 表示该位置不可以出现的字符
    • 范围类[a-e] 表示该位置可以出现的字符的范围
    • 组合类[a-xA-E0-9] 范围类的组合

    4. 边界,量词,括号

    • ^ 会匹配行或者字符串的起始位置
    • ^只有在[]内才表示非 在外边表示开始
    • $ 会匹配行或字符串的结尾位置
    • ^$在一起 表示必须是这个(精确匹配)
    • “*” 重复零次或更多 x>=0
    • “+” 重复一次或更多次 x>=1
    • “?” 重复零次或一次 x=(0||1)
    • {n} n次 x=n
    • {n,} 重复n次或更多 x>=n
    • {n,m} 重复出现的次数比n多但比m少 n<=x<=m
    • ()表示一组
    • []表示一个字符的位置
    • {}表示次数

    5. 项目中常用到的匹配(CV工程师必备)

    // 1. 匹配国内电话号码
    let tel = /^0\d{2,3}-\d{7,8}$/
    
    // 2. 匹配姓名
    let name = /^[\u4e00-\u9fa5]{2,}$/
    
    // 3.匹配腾讯QQ号
    let qq = /^[1-9]\d{4,10}$/
    
    // 4. 匹配手机号
    let phone = /^(13[0-9]|14[57]|15[0-9]|18[0-9])\d{8}$/
    
    // 5.匹配邮箱
    let emai = /^\w+([+-.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
    
    // 6. 验证中文
    let regex = /^[\u0391-\uFFE5]+$/;
    
    // 7. 验证身份证
    let idCrad = /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/;
    
    // 8. 验证整数
    let number = /^[-+]?\d*$/;
    
    // 9. 验证日期格式是否为YYYY-MM-DD hh:mm:ss格式
    let date = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
    
    // 10. 验证输入的字符是否是英文字母
    let en = /^[a-zA-Z]+$/
    
    // 11. 百度网盘链接匹配
    // 支持两种百度分享的两种链接格式
    // 格式一:链接: https://pan.baidu.com/s/15gzY8h3SEzVCfGV1xfkJ 提取码: vsuw 复制这段内容后打开百度网盘手机App,操作更方便哦
    // 格式二:http://pan.baidu.com/share/link?shareid=179436&uk=32720556 提取码: vsuw 复制这段内容后打开百度网盘手机App,操作更方便哦
    
    let reg = /([http|https]*?:\/\/pan\.baidu\.com\/[(?:s\/){0,1}|(share)]*(?:[0-9a-zA-Z?=&])+)(?:.+:(?:\s)*)?([a-zA-Z]{4})?/;
    
    // 12. 是否带有小数
    let  objRegExp= /^\d+\.\d+$/;
    
    // 13. 校验是否全由8位数字组成
    let reg = /^[0-9]{8}$/
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    1. 希望本文能对大家有所帮助,如有错误,敬请指出

    2. 原创不易,还请各位客官动动发财的小手支持一波(关注、评论、点赞、收藏)
    3. 拜谢各位!后续将继续奉献优质好文
    4. 如果存在疑问,可以私信我(主页有Q)

    在这里插入图片描述

  • 相关阅读:
    httpx+nuclei实战 | 大华智慧园区综合管理平台任意密码读取漏洞
    吴恩达机器学习 第三课 week2 推荐算法(下)
    如何运用 Python 异常处理,提高程序的高可用性?
    有监督学习——高斯过程
    基于分步表单的实践探索
    利用Seagate service获得system shell
    记一次用dataframe进行数据清理
    15.一种坍缩式的简单——组合模式详解
    一文搞懂什么是kubernetes Service
    pytorch中torch.clamp()使用方法
  • 原文地址:https://blog.csdn.net/qq_35942348/article/details/125457033