正则表达式语法
正则表达式
正则表达式用于定义一些字符串的规则,计算机可以根据正则表达式,来检查一个字符串是否符合规则,或者将字符串中符合规则的内容提取出来
语法
使用new RegExp()
创建一个正则表达式,RegExp
有两个参数
const reg = new RegExp()
方括号
|
: 或者[]
: 中括号中的内容也是或的关系[a-z]
: 任意小写字母[A-Z]
: 任意大写字母[A-z]
: 任意字母[^ ]
: 在中括号中加^
表示是否存在除了中括号以内的内容[0-9]
: 任意数字
元字符
.
: 查找单个字符,除了换行和结束符\w
: 查找任意字母、数字、下划线[A-z0-9_]
\W
: 查找除了字母、数字、下划线的内容[^A-z0-9_]
\d
: 查找数字[0-9]
\D
: 查找非数字字符[^0-9]
\s
: 查找空白字符\S
: 查找非空白字符\b
: 匹配单词边界\B
: 匹配非单词边界\0
: 查找NUL字符\f
: 查找换页符\r
: 查找回车符\t
: 查找制表符\v
: 查找垂直制表符\xxx
: 查找以八进制数 xxx 规定的字符\xdd
: 查找以十六进制数 dd 规定的字符\uxxxx
: 查找以十六进制数 xxxx 规定的 Unicode 字符
量词
通过量词可以设置一个内容出现的次数,量词只对最近的一个单位生效
{n}
: 正好出现n次{n,m}
: 出现n-m次{n,}
: 出现n次以上+
: 至少一个,相当于{1,}
*
: 任意数量,包括0,相当于{0,}
?
: 0或1个,相当于{0,1}
^n
: 用于匹配的字符串开头必须为nn$
: 用于匹配的字符串结尾必须为n?=n
: 匹配任何其后紧接指定字符串n的字符串?!n
: 匹配任何其后没有紧接指定字符串n的字符串
匹配模式
i
: 忽略大小写g
: 全局匹配模式m
: 执行多行匹配
转义字符
\
: 所有以单个字符为单位的关键字,需要进行匹配时,都需要使用\
进行转义
字面量创建
使用两个/
标识正则表达式的开头与结尾,语法为/正则表达式/匹配模式
const reg = /a/i
方法
正则表达式内置的方法
test()
使用这个方法可以用来检查一个字符串是否符合正则表达式的规则,如果符合则返回true
,否则返回false
split()
根据正则表达式所匹配的字符将字符串进行切割,split()方法不管指不指定全局匹配,都会进行全局匹配切割
search()
搜索字符串中是否含有指定内容,如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到返回-1,search()只会查找第一个,即使设置为全局匹配模式
match()
可以根据正则表达式,从一个字符串中将符合条件的内容提取出来,默认情况下match()只会找到第一个符合要求的内容,找到之后就会停止检索,我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容;match()会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果
replace()
可以将字符串中指定内容替换为新的内容
语法: stringObject.replace(regexp/substr, replacement)
参数 | 描述 |
---|---|
regexp/substr | 必需,规定子字符串或要替换的模式的 RegExp 对象,如果该值是一个字符串,优先用于文本匹配,而不是被识别为 RegExp 对象 |
replacement | 必需,一个字符串值,规定了替换文本或生成替换文本的函数 |
返回值
一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。
说明
字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。
replacement 可以是字符串,也可以是函数。如果它是字符串,那么每个匹配都将由字符串替换。但是 replacement 中的 $ 字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。
字符 | 替换文本 |
---|---|
$1、$2、...、$99 | 与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。 |
$& | 与 regexp 相匹配的子串。 |
$` | 位于匹配子串左侧的文本。 |
$' | 位于匹配子串右侧的文本。 |
$$ | 直接量符号。 |
子表达式: 在大部分场景中,子表达式表示以
()
包裹的内容,每一对单独的()
所匹配上的内容,在replacement中都可以使用对应顺序的 $? 表示
注意: ECMAScript v3 规定,replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异