JavaScript 正则表达式基础语法、常用方法与实战应用

作者:闭包旅人

时间:2026-10-24

浏览:279

本文系统介绍 JavaScript 中正则表达式的两种定义方式、核心标志位含义及 test、match、replace 等常用方法。通过断言、字符类、量词等实战案例,解析单词边界、范围匹配及数字区间验证的具体用法,帮助开发者掌握正则在字符串处理中的实际应用。

文章目录

在实际开发工作中,JavaScript 正则表达式的应用频率较高,因此掌握这部分知识至关重要。

一、基础语法:

第一种方式采用字面量语法。


var expression=/pattern/flags;

第二种方式通过 RegExp 构造函数创建正则对象。


var pattern = /\w/gi;  //字面量语法
var pattern = new RegExp('\\w', 'gi');//构造函数语法,这两者是等价的

需要注意的是,当正则表达式的内容需要动态生成时,必须选择第二种构造函数语法。

RegExp 构造函数中支持的 flags 参数包含三个主要标志。

g:代表全局模式,意味着正则表达式将应用于整个字符串,而不是在找到第一个匹配项后立即停止。

i:代表忽略大小写模式,即在匹配过程中不区分字符串的大小写。

m:代表多行模式,允许在到达当前行末尾后继续查找下一行中是否存在匹配项。

此外还存在其他 flags,但由于使用频率极低,此处不再赘述。

关于上述示例中 的具体含义,请继续阅读后续内容。

二、方法

主要涉及 test()、search()、match() 和 replace() 四个方法。虽然存在其他方法,但因使用场景较少,此处不作展开。

1、test() 方法的使用

用于判断指定字符串中是否包含符合正则条件的子串。

2、search() 方法的使用

用于搜索符合正则条件的字符串第一次出现的索引位置;若未找到匹配项,则返回 -1。

3、match() 方法的使用

用于返回所有匹配结果的数组。

4、replace() 方法的使用,该功能在实际应用中非常广泛。

用于匹配符合正则条件的字符串,并将其替换为指定的新字符串。

三、匹配表达式跟实战

1、断言:

断言用于指定匹配发生的特定条件。概念较为抽象,以下通过具体示例进行说明。

字符 描述
^ 匹配开头
$ 匹配结尾
\b 匹配单词的边界
\B 匹配非单词的边界

举例说明。

假设需要匹配一个字符串,要求其内容从头到尾均为 'dog',且忽略大小写。


var pattern = /^dog$/i;//忽略大小写

console.log(pattern.test('dog'));//true
console.log(pattern.test('sdfdog'));//false
console.log(pattern.test('dog56'));//false
console.log(pattern.test('dOG'));//true

var pattern = /\b\w+/g;//全局匹配,这里的+,是量词,代表1次或者多次

console.log('Hello World'.match(pattern));//输出['Hello','World'],这里就是match用法,返回匹配的数组。

在此说明, 用于匹配单词边界,而 则匹配非单词边界。两者通过大小写区分正负,无需过多解释。

另外,许多开发者对单词边界的概念尚不清晰。

简要解释如下:以 'Hello World' 为例,其单词边界共有四个,分别位于 H、o、W、d 的位置。

2、字符类:

元字符 描述
. 查找单个字符,除了换行和行结束符
\w 查找单词字符,相当于[A-Za-z0-9_]
\W 查找非单词字符,相当于[^A-Za-z0-9_]
下面的反义便不再罗列出来了。
\d 查找数字,相当于[0-9]
\s 查找空白字符
\0 查找NULL字符
\n 查找换行符
\f 查找换页符
\r 查找回车符
\t 查找制表符
\v 查找垂直制表符

3、范围:

字符 描述
[abc] 匹配a,b,c中的任意一个字符
[^abc] 匹配不是a,b,c中的任意一个字符
[0-9] 匹配0-9任意范围的数字,同理[a-z]匹配a-z任意范围的字符
[a-z] 匹配a到z之间的任意一个字符
x|y 匹配x或者y

4、量词:

字符 描述
n+ 匹配任何包含至少一个字符n的字符串
n* 匹配任何包含零个或多个n的字符串
n? 匹配任何包含零个或者一个n的字符串
n{x} 匹配包含x个n的字符串
n{x,y} 匹配最少x个,最多y个n的字符串

四、拓展

匹配 10-36 之间的数字。


var pattern = /1[2-9]|[2-3][0-9]|4[0-6]/;//12-46

console.log(pattern.test(11));//false
console.log(pattern.test(12));//true
console.log(pattern.test(20));//true
console.log(pattern.test(36));//true
console.log(pattern.test(46));//true
console.log(pattern.test(47));//false

将 'Hello,World!Hello' 中的 'Hello' 替换为 'Welcome'。

此处重点强调 replace 方法在正则中的应用,因其实际使用频率极高。flags 中的 g 标志加上与否会产生显著差异。


var pattern = /Hello/g;

var oldString = 'Hello,World!Hello';
var newString = oldString.replace(pattern, 'Welcome');
console.log(newString);//Welcome,World!Welcome

总结

本文介绍了 JavaScript 中正则表达式的实际应用。如需了解更多相关内容,建议搜索本站过往文章或继续阅读后续系列文章,感谢支持。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章