JavaScript中如何创建正则表达式?

来源:IPIPP.com作者:头衔:全栈工程师
导读:本期聚焦于小伙伴创作的《JavaScript中如何创建正则表达式?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《JavaScript中如何创建正则表达式?》有用,将其分享出去将是对创作者最好的鼓励。

正则表达式是JavaScript中处理字符串的强大工具,常用于表单验证、内容提取、格式替换等场景,掌握它的创建方法是使用正则表达式的第一步。

JavaScript中如何创建正则表达式?

两种创建正则表达式的方式

JavaScript中创建正则表达式主要有字面量和构造函数两种方式,两种方式各有适用场景。

1. 字面量方式

字面量是最常用的创建方式,语法简洁,适合正则表达式是固定字符串的场景。语法格式为/正则表达式内容/修饰符,其中修饰符可选。

示例:创建一个匹配数字的正则表达式

// 字面量方式创建匹配1-3位数字的正则
const reg1 = /^\d{1,3}$/;
console.log(reg1.test("123")); // 输出true
console.log(reg1.test("1234")); // 输出false

2. RegExp构造函数方式

当需要动态拼接正则表达式内容时,字面量无法满足需求,此时可以使用RegExp构造函数。构造函数接收两个参数,第一个是正则表达式的字符串内容,第二个是可选的修饰符字符串。

示例:动态创建匹配指定前缀的正则

// 动态前缀
const prefix = "user_";
// 构造函数方式创建正则,注意字符串中的反斜杠需要转义
const reg2 = new RegExp("^" + prefix + "\\d{3}$");
console.log(reg2.test("user_123")); // 输出true
console.log(reg2.test("admin_123")); // 输出false

两种方式的差异对比

两种方式的核心功能一致,但在使用场景和细节上有区别,具体对比如下:

对比项字面量方式RegExp构造函数方式
语法简洁度更简洁,不需要处理字符串转义较繁琐,字符串中的反斜杠需要额外转义
动态性无法动态拼接正则内容,正则固定支持动态拼接正则内容,灵活性更高
性能编译时创建,相同正则只会编译一次运行时创建,每次执行都会重新编译

正则表达式常用修饰符

创建正则表达式时可以添加修饰符,改变正则的匹配规则,常用的修饰符有三个:

  • i:忽略大小写匹配,默认匹配时区分大小写
  • g:全局匹配,找到第一个匹配项后不会停止,会继续匹配后续内容
  • m:多行匹配,^和$会匹配每一行的开头和结尾,而不是整个字符串的开头和结尾

示例:使用修饰符的正则创建

// 忽略大小写匹配hello
const reg3 = /hello/i;
console.log(reg3.test("Hello")); // 输出true

// 全局匹配字符串中的所有数字
const reg4 = /\d/g;
const str = "a1b2c3";
console.log(str.match(reg4)); // 输出["1", "2", "3"]

创建后的正则使用示例

创建好正则表达式后,可以配合JavaScript的字符串方法或正则自身的方法完成实际业务需求,下面是常见的使用场景。

表单手机号验证

使用字面量创建正则验证手机号格式

// 匹配11位手机号,以1开头,第二位是3-9的数字,后面9位是任意数字
const phoneReg = /^1[3-9]\d{9}$/;
function checkPhone(phone) {
  return phoneReg.test(phone);
}
console.log(checkPhone("13812345678")); // 输出true
console.log(checkPhone("12812345678")); // 输出false

动态替换敏感词

使用构造函数动态创建正则替换敏感词

// 敏感词列表
const sensitiveWords = ["广告", "垃圾"];
// 拼接成正则字符串,用|分隔表示或关系
const sensitiveRegStr = sensitiveWords.join("|");
// 创建全局匹配的正则
const sensitiveReg = new RegExp(sensitiveRegStr, "g");
const content = "这是一条垃圾广告内容";
const filteredContent = content.replace(sensitiveReg, "**");
console.log(filteredContent); // 输出"这是一条****内容"

注意事项

在使用RegExp构造函数创建正则时,如果正则内容中包含反斜杠,需要在字符串中额外转义,比如要匹配\d,字符串中需要写成\\d,否则会被当作普通字符处理。另外,字面量方式创建的正则如果内容需要动态变化,必须改用构造函数方式,不能尝试在字面量中拼接变量,这是无效语法。

JavaScript正则表达式RegExp正则匹配正则语法修改时间:2026-05-29 03:36:25

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。