正则表达式

JavaScript的正则表达式有两种写法,一种是字面量模式的写法,一种是构造函数模式的写法

1、字面量模式

/表达式/

2、构造函数模式

new RegExp('表达式')

具体的写法如下

javascript 复制代码
匹配表达式.test(匹配内容)

接下来我们都以字面量模式来进行举例学习

第一个:hi

先后输入hi,this,what等字符串,发现hi和this可以匹配,what不能匹配

总结:匹配包含hi的任意字符串

如果我们要严格匹配hi这个字符串要怎么办呢,那就引入\b

\b \B
匹配边界 匹配非边界(类似于hi字符串,没有其他的字符串)

这两个什么意思呢?我们先来看下下面的表达式

javascript 复制代码
\bhi\b		//只能匹配hi字符串,前面或后面多一个字符都不行,如ahi不能匹配,him也不能匹配

接下来看下下面的表达式

javascript 复制代码
\Bhi\B		//匹配任意包含hi的字符串

接下来看下另外一组"\d"和"\D"

\d \D
匹配一个数字 匹配一个非数字

怎么理解呢?我们来看下下面的例子

javascript 复制代码
hi\d	//可以匹配hi1,hi2等字符串,但不能匹配hia,hib,hi22,hi333等字符串
hi\D	//可以匹配hia,hib,hiA,hiB,但不能匹配hi1,hi2,hi22,hi333等字符串

接下来再来看一组"\w"和"\W"

\w \W
匹配字母/数字/下划线 匹配除字母/数字/下划线之外的字符

看下下面的例子

javascript 复制代码
hi\w	//可以匹配hi1,hia,hi_,但不能匹配hi#,hi$,hi11,hiwer等字符串
hi\W	//可以匹配hi#,hi$,但不能匹配hi1,hia,hi_,hi11,hiwer等字符串

再看下一组"^"和"$"

^ $
表示字符串的开头 表示字符串的结束

废话不多说,直接上例子

javascript 复制代码
^hi$	//只能匹配hi字符串,使用^限定了只能是h开头,$限定了只能以i结尾,所以只能匹配hi字符串
^hi		//匹配以hi开头的所有字符串,例如:hi,hia,hi2,hi$等
hi$		//匹配以hi结尾的所有字符串,例如:ahi,55hi,$$$hi等

接下来看一下方括号"\[\]",这个指的是匹配一堆字符中的一个

直接看例子

javascript 复制代码
^[a-z]at$	//匹配以小写字母a到z开头,以at结尾的字符,例如:cat,bat等,不匹配Cat,Bat,1at等
^[A-Za-z0-9]at$	//匹配A到Z或者a到z或者0到9的字符开头,at结尾的字符串,例如:cat,Cat,1at等,不匹配$at,#at, _at等

方括号"\^"表示不匹配这个集合中任何一个字符

javascript 复制代码
^[^xyz]at$	//表示不匹配以x、y、z开头,以at结尾的字符串,例如:不匹配xat,yat,zat,但是可以匹配cat,bat等字符串

来看下一组"+","*","?"

+ * ?
表示前一模式可以被重复1次或n次 表示前一模式可以匹配0次或n次 表示前一模式可以匹配0次或1次

举例如下:

javascript 复制代码
^go+gle$	//可以匹配gogle,google,gooogle,goooogle,... 就是可以匹配o重复1次或n次
^go*gle$	//可以匹配ggle,gogle,google,gooogle,... 匹配o重复0次或n次
^go?gle$	//只能匹配ggle,gogle两个字符串,其他不能匹配

接下来看另外一个表达式"{x}",该表达式表示前一模式可以被重复x次

举例如下:

javascript 复制代码
^go{2}gle$	//只能匹配google字符串

再来看比较类似的表达式"{x,y}",表示前一模式可以被重复x到y次。

例如:

javascript 复制代码
^go{2,4}gle$	//只能匹配google,gooogle,goooogle三个字符串

再来看看表达式"{x,}",表示前一模式可以被重复至少x次

例如:

javascript 复制代码
^go{2,}gle$		//匹配google,gooogle,goooogle,... 字符串,就是o这个字符至少有2个

接下来看下"()",这个表示可以指定一堆字符来匹配一个模式

直接看例子:

javascript 复制代码
^(very )*large$	//匹配large,very large,very very large,... 等字符串

接下来看下"|",这代表分支,用来指定几个规则只要匹配一个规则即可。

例如:

javascript 复制代码
^com$|^org$|^net$	//只能匹配com  org  net这三个字符串
^abc.(com|org|net)$	//能匹配abc.com   abc.org    abc.net这三个字符串

接下来看看"\",这个符号表示转移,就是说如果需要匹配类似,,^,+等有特殊含义的字符,可以用"\"做转义

javascript 复制代码
^1\*\(2\+3\)=6$			//只能匹配  1*(2+3)=6 字符串

把上面的那些表达式弄清楚了,基本就能熟练运用表达式了

另外记一些常用的表达式

javascript 复制代码
[\u4e00-\u9fa5] //表示汉字中的任意一个汉字

其他的就靠大家自己多做练习了。

相关推荐
程序猿乐锅12 小时前
面向对象练习:图书借阅系统里的封装、抽象类与多态
开发语言·前端·数据库·后端·python·学习·1024程序员节
老木避暑研究所12 小时前
负氧离子数据的采集、清洗与可视化:一套可复用的环境监测数据分析模板
前端·人工智能·数据分析
计算机魔术师12 小时前
AI 推翻了一个当了30年地基的假设,查的人恰好是立论者
前端
范同学~12 小时前
项目添加水印
java·前端·javascript
鬼手点金12 小时前
缓存作为架构约束
开发语言·前端·人工智能·python·microsoft·缓存·架构
月夏12 小时前
前端第一次接自己的后端:mock 切真接口踩了 2 个坑,组件只改了一行 import
前端·后端·node.js
IT_陈寒12 小时前
React实战技巧总结:如何优雅处理复杂列表的渲染卡顿问题?
前端·人工智能·后端
ZoeLandia12 小时前
React11:数据请求与 TanStack Query
前端·react.js·typescript·react
软件技术NINI12 小时前
基于PHP和MySQL的快递代收点管理系统的设计与实现
开发语言·javascript·数据库·mysql·毕业设计·php·毕设
前端架构师-老李13 小时前
HTML与CSS基础第二课—初识HTML
前端·css·html