登录
首页 >  文章 >  前端

JavaScript正则表达式使用全解析

时间:2026-02-23 09:44:45 200浏览 收藏

本文深入解析了JavaScript中正则表达式匹配的三大核心方法——match()用于精准提取所有匹配项,test()提供轻量高效的布尔校验,replace()支持灵活的字符串或函数式替换,并强调了标志位(g/i/m)的关键作用、动态模式下RegExp构造函数的正确用法及防范正则注入的安全实践,帮助开发者避开常见陷阱,写出更可靠、可维护的正则代码。

Javascript如何进行正则表达式匹配?

JavaScript 中正则表达式匹配主要通过字符串方法(如 match()test()replace())和 RegExp 对象实现,关键在于写对模式、选对方法、注意标志位。

使用 match() 获取所有匹配结果

适用于提取文本中所有符合规则的子串。返回数组(含匹配项),无匹配时返回 null

  • 全局匹配需加 g 标志,否则只返回第一个匹配及其捕获组信息
  • 搭配 i(忽略大小写)、m(多行模式)等可扩展适用场景

示例:
  const str = "Phone: 138-1234-5678, Fax: 010-8765-4321";
  const phones = str.match(/\d{3}-\d{4}-\d{4}/g);
  // → ["138-1234-5678", "010-8765-4321"]

test() 快速判断是否匹配

最轻量的方法,返回布尔值,适合表单校验、条件分支等场景。

  • 直接调用 RegExp 实例的 test() 方法
  • 注意:若正则含 g 标志,多次调用会因内部 lastIndex 变化导致结果不稳定,建议每次新建实例或手动重置 lastIndex = 0

示例:
  const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
  console.log(emailRegex.test("user@example.com")); // true
  console.log(emailRegex.test("invalid@")); // false

借助 replace() 替换匹配内容

不仅能替换固定字符串,还能用捕获组动态生成新内容。

  • 第二个参数可以是字符串(支持 $1$& 等占位符)或函数(接收匹配项、分组、索引、原字符串等参数)
  • 同样依赖 g 标志实现全部替换

示例(格式化日期):
  const text = "Today is 2023-12-25";
  text.replace(/(\d{4})-(\d{2})-(\d{2})/, "$2/$3/$1");
  // → "Today is 12/25/2023"

创建正则的两种方式与注意事项

字面量写法(/pattern/flags)简洁,适合静态模式;构造函数 new RegExp(string, flags) 适合动态拼接模式(比如从用户输入生成)。

  • 用构造函数时,反斜杠需双写("\\d"),因为字符串本身会先解析一次
  • 避免在循环中重复创建相同正则字面量(虽无害),更不要在循环里用 new RegExp 拼接未过滤的用户输入,以防正则注入

基本上就这些。不复杂但容易忽略标志位和方法差异。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《JavaScript正则表达式使用全解析》文章吧,也可关注golang学习网公众号了解相关技术文章。

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>