正则表达式RegExp(1),学习路线+知识点梳理

本文详细介绍了正则表达式的各种语法、转义规则,包括限定符、贪婪与非贪婪模式、分组、零宽度断言和逻辑运算。同时强调了前端开发中基础知识的重要性,特别是对于面试准备。提供了一份全面的学习资料链接,旨在帮助开发者提升技能并避免基础知识短板。
摘要由CSDN通过智能技术生成

| 代码/语法 | 说明 |

| — | — |

| [aeiou] | 匹配aeiou中任一字符 |

| [^aeiou] | 匹配除了aeiou这几个字母以外的任意字符 |

转义字符

| 代码/语法 | 说明 |

| — | — |

| \a | 响铃 |

| \t | 制表符 |

| \r | 回车符 |

| \n | 换行符 |

| \f | 换页符 |

| \b | 退格 |

| \e | ESC |

| \v | 垂直制表符 |

| \cC | 控制字符(如ctrl+c) |

| \040 | 八进制(0开头) |

| \x20 | 十六进制(x开头) |

| \uA0FF | Unicode字符 |

| \G | 当前搜索的开头 |

| \A | 必须出现在字符串开头 |

| \Z | 必须实现在字符串结尾或\n之前 |

| \z | 必须实现在字符串结尾 |

| 注1 | 在[]中,正则表达式中有含义的字符都要再前方加\转义。如\写作\\ |

| 注2 | \b在[]中才表示退格,在外面表示单词边界 |

| 注3 | 正则表达式不允许双引号中出现单引号 |

注意换行的回车不是一个东西,虽然我们看上去是一样的。这个和编码发展历史有关,区别见下表:

| Unicode序列 | 正则 | 名称 | 简写 | 描述 |

| — | — | — | — | — |

| U+000DU+000A | (\r\n) | 回车换行 | CRLF | Windows,DOS中的文本文件 |

| U+000D | (\r) | 回车 | CR | 旧版的MacOS中的文本文件 |

| U+000A | (\n) | 换行 | LF | Unix,Linux,BSD和OSx中的文本文件 |

限定符
贪婪的

| 代码/语法 | 说明 |

| — | — |

| * | 重复零次或更多次 |

| + | 重复一次或更多次 |

| ? | 重复零次或一次 |

| {n} | 重复n次 |

| {n,} | 重复n次或更多次 |

| {n,m} | 重复n到m次 |

非贪婪的

| 代码/语法 | 说明 |

| — | — |

| *? | 重复任意次,但尽可能少重复 |

| +? | 重复1次或更多次,但尽可能少重复 |

| ?? | 重复0次或1次,但尽可能少重复 |

| {n,m}? | 重复n到m次,但尽可能少重复 |

| {n,}? | 重复n次以上,但尽可能少重复 |

分组

我们已经提到了怎么重复单个字符,但如果想要重复多个字符又该怎么办?你可以用小括号来指定子表达式(也叫做分组),然后你就可以指定这个子表达式的重复次数了。 比如

(?#这一行是个注释,注释这样写)

^abc{2,} (?#匹配ab开头后面2个及以上c)

^a(bc){2,} (?#匹配a开头后面2个及以上bc)

每一个()中的变量都会被分配一个编号((?:exp)除外),按()出现顺序,从左到右从外到内编号,从1开始。编号0默认代表整个表达式。可以利用\+ 编号的形式访问对应编号的匹配。例如:

<([>]*)>[<>]*</\1> (?#匹配一对不含子标签的xml标签及里面的内容)

在.Net中,可以用(?<name>exp)为表达式命名,此时,该表达式也同时具有编号,可以用\k<name>访问这个表达式。需要注意的是,系统会按从左到右从外到内的顺序给没有名字的表达式编号,然后再从头开始按从左到右从外到内的顺序给有名字的表达式编号。

当然还有一些有意义的括号,除了(?:exp)以外,都会带有编号。下面是完整的分组说明:

| 代码/语法 | 说明 |

| — | — |

| (exp) | 普通分组 |

| (?<name>exp) | 名为name的分组 |

| (?:exp) | 匹配字符串exp,但不为其分配组号 |

零宽度断言

何为断言:断言某个位置会出现,或不会出现某个模式,但不去匹配这个模式。当断言不成功时,不再匹配。

| 代码/语法 | 说明 |

| — | — |

| (?=exp) | 匹配字符串exp前面的位置 |

| (?<=exp) | 匹配字符串exp后面的位置 |

| (?!exp) | 匹配后面不是字符串exp的位置 |

| (?<!exp) | 匹配前面不是字符串exp的位置 |

| (?>exp) | 只匹配exp一次 |

逻辑运算符 或

| 代码/语法 | 说明 |

| — | — |

| | | 逻辑或 |

递归匹配

这个和上面的分组命名不矛盾,这个就是那个部分的扩展。

| 代码/语法 | 说明 |

| — | — |

| (?exp) | 把匹配的内容命名为name,入栈 |

| (?<-name>exp’) | 从栈中弹出一个内容 |

| (?(name) yes | no) | 如果栈中存在名为name的内容就匹配yes部分,否则匹配no部分,这里yes和no分别是2段表达式 |

运算符优先级

从上到下从高到低,同一高度顺序运算

| 优先级 |

| — |

| \ 转义字符 |

| () , [] |

| * , + , ? , {n}, {n, } , {n, m} |

| ^ , $ , \元字符 |

| | |

常用的正则表达式

验证数字类型输入
  • 数字:^[0-9]*$

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

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

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

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

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

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

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

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

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

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

  • 非零的负整数:^\-[1-9][]0-9″*$ 或 ^-[1-9]\d*$

  • 非负整数:^\d+$ 或 ^[1-9]\d*|0$
    自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

基础知识是前端一面必问的,如果你在基础知识这一块翻车了,就算你框架玩的再6,webpack、git、node学习的再好也无济于事,因为对方就不会再给你展示的机会,千万不要因为基础错过了自己心怡的公司。前端的基础知识杂且多,并不是理解就ok了,有些是真的要去记。当然了我们是牛x的前端工程师,每天像背英语单词一样去背知识点就没必要了,只要平时工作中多注意总结,面试前端刷下题目就可以了。

什么?你问面试题资料在哪里,这不是就在你眼前吗(滑稽

注:前端)**

最后

基础知识是前端一面必问的,如果你在基础知识这一块翻车了,就算你框架玩的再6,webpack、git、node学习的再好也无济于事,因为对方就不会再给你展示的机会,千万不要因为基础错过了自己心怡的公司。前端的基础知识杂且多,并不是理解就ok了,有些是真的要去记。当然了我们是牛x的前端工程师,每天像背英语单词一样去背知识点就没必要了,只要平时工作中多注意总结,面试前端刷下题目就可以了。

什么?你问面试题资料在哪里,这不是就在你眼前吗(滑稽

资料领取方式:戳这里免费领取

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值