正则重难点和个人见解

2023-11-04

正则表达式(RegExp)

常用不常写

1.查询:正则大全

2.作用:描述了一种字符串的匹配模式,用在表单验证、搜索替换(模糊查询)

一:声明

​ 1.**构造函数:**new RegExp(规则,模式修正符);

​ 2.字面量:let reg = /规则/模式修正符;

二:模式修正符(可选)

​ 1. g 全局

​ 2. i 不用区分大小写

​ 3. m多行匹配

三:正则组成部分

​ 1. /…(规则)/ 定界符

  1. 简单字符 规定的字符在字符串中必须包含
let reg = /a/;//字符串中是否包含 a
let str = 'bbbbbbbb';
console.log(reg.test(str));//flase
  1. ​ 元字符 有含义的符号 && || []…
  2. 模式修正符(可选)

四:元字符

​ 1. [] 匹配[]中任意一个字符 n选一

let reg = /[a-z]/;//小写a-z
let reg = /[A-Z]/;//大写A-Z
let reg = /[0-9]/;//0-9
let reg = /[0-9A-Za-z]/;//或者的意思

​ 2. {min,max} 区间量词 匹配最少min次 最多max次

​ 3. [^] 排除型字符 除了…

let reg = /[^b]/;
let str = 'bbbbbabbbbb';
let str1 = 'bbbbbbbbbb';
log(reg.test(str))//true
log(reg.test(str1))//flase

  1. ? 匹配0次或者1次 {0,1}

​ 5. * 匹配0次或者多次 {0,}

​ 6. + 匹配一次或者多次 {1,}

​ 7. ^ /^/ 起始

​ 8. $ /KaTeX parse error: Expected group after '^' at position 10: / 结尾 /^̲/组成了【是不是】

​ 9. | 或者

​ 10. - 范围

五:简记

  1. \d 匹配数字[0-9]
  2. \w 单词字母 匹配数字、字母、下划线 [a-zA-Z0-9_]
  3. \s space 匹配空格

\D 除了数字

\W 除了数字、字母、下划线

\S 除了空格

六:常见的正则表达式(仅供参考)

1.检验数字的正则表达式

\1. 数字:1*$

\2. n位的数字:^\d{n}$

\3. 至少n位的数字:^\d{n,}$

\4. m-n位的数字:^\d{m,n}$

\5. 零和非零开头的数字:^(0|[1-9][0-9]*)$

\6. 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$

\7. 带1-2位小数的正数或负数:^(-)?\d+(.\d{1,2})?$

\8. 正数、负数、和小数:^(-|+)?\d+(.\d+)?$

\9. 有两位小数的正实数:2+(.[0-9]{2})?$

\10. 有1~3位小数的正实数:3+(.[0-9]{1,3})?$

\11. 非零的正整数:4\d*$ 或 ^([1-9][0-9]){1,3}$ 或 ^+?[1-9][0-9]$

\12. 非零的负整数:^-[1-9][]0-9"$ 或 ^-[1-9]\d$

\13. 非负整数:^\d+$ 或 5\d*|0$

\14. 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$

\15. 非负浮点数:^\d+(.\d+)?$ 或 6\d*.\d*|0.\d*[1-9]\d*|0?.0+|0$

\16. 非正浮点数:^((-\d+(.\d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]\d*.\d*|0.\d*[1-9]\d*))|0?.0+|0$

\17. 正浮点数:7\d*.\d*|0.\d*[1-9]\d*$ 或 ^(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))$

\18. 负浮点数:^-([1-9]\d*.\d*|0.\d*[1-9]\d*)$ 或 ^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))$

\19. 浮点数:^(-?\d+)(.\d+)?$ 或 ^-?([1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0)$

2.检验字符的正则表达式

\1. 汉字:8{0,}$

\2. 英文和数字:9+$ 或 10{4,40}$

\3. 长度为3-20的所有字符:^.{3,20}$

\4. 由26个英文字母组成的字符串:11+$

\5. 由26个大写英文字母组成的字符串:12+$

\6. 由26个小写英文字母组成的字符串:13+$

\7. 由数字和26个英文字母组成的字符串:14+$

\8. 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$

\9. 中文、英文、数字包括下划线:15+$

\10. 中文、英文、数字但不包括下划线等符号:16+$ 或 17{2,20}$

\11. 可以输入含有^%&’,;=?KaTeX parse error: Can't use function '\"' in math mode at position 1: \̲"̲等字符:[^%&',;=?\x22]+ 12 禁止输入含有的字符:[^\x22]+

3.特殊需求表达式(比较重要)

\1. Email地址:^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$

\2. 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?

\3. InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+.)+[\w-]+(/[\w-./?%&=]*)?$

\4. 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$

\5. 电话号码(“XXX-XXXXXXX”、“XXXX-XXXXXXXX”、“XXX-XXXXXXX”、“XXX-XXXXXXXX”、"XXXXXXX"和"XXXXXXXX):^((\d{3,4}-)|\d{3.4}-)?\d{7,8}$

\6. 国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}

\7. 身份证号(15位、18位数字):^\d{15}|\d{18}$

\8. 短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$

\9. 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):18[a-zA-Z0-9_]{4,15}$

\10. 密码(字母开头,长度在6~18之间,只能包含字母、数字和下划线):19\w{5,17}$

\11. 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.\d)(?=.[a-z])(?=.*[A-Z]).{8,10}$

\12. 日期格式:^\d{4}-\d{1,2}-\d{1,2}

\13. 一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$

\14. 一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$

\15.钱的输入格式:.有四种钱的表示形式我们可以接受:“10000.00” 和 “10,000.00”, 和没有 “分” 的 “10000” 和 “10,000”:20[0-9]*$

\16.这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:^(0|[1-9][0-9]*)$

\17.一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:^(0|-?[1-9][0-9]*)$

\18. .这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分:21+(.[0-9]+)?$

\19. 必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 “10” 和 “10.2” 是通过的:22+(.[0-9]{2})?$

\20…这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:23+(.[0-9]{1,2})?$

\21.这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:24{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$

\22. 1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$

\23. 备注:这就是最终结果了,别忘了"+“可以用”*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里

\24. xml文件:^([a-zA-Z]±?)+[a-zA-Z0-9]+\.[x|X][m|M][l|L]$

\25. 中文字符的正则表达式:[\u4e00-\u9fa5]

\26. 双字节字符:[^\x00-\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))

\27. 空白行的正则表达式:\n\s*\r (可以用来删除空白行)

\28. HTML标记的正则表达式:<(\S*?)[^>]>.?</\1>|<.*? /> (网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)

\29. 首尾空白字符的正则表达式:^\s*|\s*KaTeX parse error: Undefined control sequence: \s at position 4: 或(^\̲s̲*)|(\s*) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)

\30. 腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)

\31. 中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)

\32. IP地址:\d+.\d+.\d+.\d+ (提取IP地址时有用)

\33. IP地址:((?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正则重难点和个人见解 的相关文章

随机推荐

  • 相机成像 - ISP之RGB域处理

    在之前的文章中 介绍了ISP 的基本流程和RAW域中的处理方法 完美成像中最重要的环节 ISP之RGB域处理 今天延续之前的内容 讲解中间的部分 RGB域的处理 ISP的流程具体如图所示 我们继续围绕这个图把RGB域中每个部分的处理给大家讲
  • 【最远点采样FPS】点云采样方式(一) — 最远点采样

    本文为博主原创文章 未经博主允许不得转载 本文为专栏 python三维点云从基础到深度学习 系列文章 地址为 https blog csdn net suiyingy article details 124017716 点云最远点采样FPS
  • CC2640R2F低功耗蓝牙芯片相关设计分享

    电路设计简介 CC2640 的 RF 差分线越短越好 做差分 100 阻抗匹配 天线部分阻抗 50 欧姆匹配 本次设计采用了陶瓷天线 AN9520 245 减少天线面积 蓝牙芯片在底层 阻抗参考平面第三层 在天线部分下方覆铜 GND 使用嘉
  • nginx配置部署一个域名,多个端口

    最近用基于windows下的nginx部署了服务器 1 安装好windows下的nginx以后 会有以下文件 找到conf下的nginx 此文件为nginx的配置文件 2 初始只有一个默认80端口 这是nginx的默认端口号 server
  • 高并发的epoll+线程池,业务在线程池内

    epoll是linux下高并发服务器的完美方案 因为是基于事件触发的 所以比select快的不只是一个数量级 单线程epoll 触发量可达到15000 但是加上业务后 因为大多数业务都与数据库打交道 所以就会存在阻塞的情况 这个时候就必须用
  • Web服务器

    文章目录 1 HTTP 协议 1 1 概述 1 2 URI和URL的区别 1 3 请求消息 Request 1 4 响应消息 Response 1 5 状态码 1 6 HTTP 1 0 和 HTTP 1 1 1 7 Cookie 1 8 S
  • Spring是如何支持多数据源的

    大家好 我是课代表 欢迎关注我公众号 Java课代表 上篇介绍了数据源基础 并实现了基于两套DataSource 两套mybatis配置的多数据源 从基础知识层面阐述了多数据源的实现思路 不了解的同学请戳 同学 你的多数据源事务失效了 正如
  • 9.5位操作(二)——给定一个介于0和1之间的实数,类型为double,打印它的二进制表示

    功能 给定一个介于0和1之间的实数 类型为double 打印它的二进制表示 如果该数字无法精准地用32位以内的二进制表示 则打印 ERROR 两种方法 方法一 将数字乘以2以后 与1比较 public static String print
  • QT字节数组类QByteArray

    QT字节数组类QByteArray 初始化 访问某个元素 截取字符串 获取字节数组的大小 数据转换与处理 Hex转换 数值转换与输出 字母大小写转换 字符串数值转化为各类数值 QBQyteArray和char 互转 QByteArray 和
  • CentOS 安装 Jenkins

    本文目录 1 安装 JDK 2 获取 Jenkins 安装包 3 将安装包上传到服务器 4 修改 Jenkins 配置 5 启动 Jenkins 6 打开浏览器访问 7 获取并输入 admin 账户密码 8 跳过插件安装 9 添加管理员账户
  • Linux防火墙的配置

    Linux防火墙的配置 防火墙是一种网络安全设备 可用于保护网络中的计算机和其他设备免遭来自互联网或其他网络连接的未授权访问 其主要作用是监控网络流量 根据预先设定的规则对网络流量进行过滤 以防止未经授权的访问 攻击和病毒等威胁 在Linu
  • pip安装pyspark报错

    报错 Traceback most recent call last File
  • UG/NX二次开发Siemens官方NXOPEN实例解析—1.3 BlockStyler/ExtrudewithPreview

    列文章目录 UG NX二次开发Siemens官方NXOPEN实例解析 1 1 BlockStyler ColoredBlock UG NX二次开发Siemens官方NXOPEN实例解析 1 2 BlockStyler EditExpress
  • 一维数组 ——Java

    目录 前言 一 一维数组的声明及初始化 1 一维数组的声明 2 一维数组的初始化 2 1静态初始化 2 2动态初始化 二 访问数组元素 1 添加元素 2 遍历数组 2 1 for循环 2 2 foreach 循环 增强for循环 2 3 f
  • 从深度学习的角度考虑sift关键点匹配

    试一试 看看行不行 得到内点后 再进行下一步
  • 组词典

    组词典将多个图形对象编组存储 存储后的效果 可以通过组来找到所需要的实体 在界面上选中一个就可以找到其他实体 即选中的为一个组 但是与块对比 不同的是将实体分组并不形成新的实体对象 在CAD中的的命令为group 创建组词典 AcDbGro
  • Pytorch创建与安装(无GPU) 无敌教程

    第一步 Pytorch创建与安装 无GPU 独爱相关算法的博客 CSDN博客 pytorch没有gpu 第一步中要看这一步 anaconda下载及安装 保姆级教程 知乎
  • 【编译原理】- 递归下降的语法分析器的实现

    目录 一 实验题目 二 分析与设计 三 源代码 一 实验题目 编写识别由下列文法G E 所定义的表达式的递归下降语法分析器 E E T E T T T T F T F F F E i 输入 含有十进制数或十六进制数的表达式 如 75 1ah
  • 关于vector的emplace_back和push_back的区别

    实验代码 class A public A int x x x cout lt lt construct A lt lt endl A const A a x a x cout lt lt copy construct A lt lt en
  • 正则重难点和个人见解

    正则表达式 RegExp 常用不常写 1 查询 正则大全 2 作用 描述了一种字符串的匹配模式 用在表单验证 搜索替换 模糊查询 一 声明 1 构造函数 new RegExp 规则 模式修正符 2 字面量 let reg 规则 模式修正符