贝利信息

javascript正则表达式是什么_如何用于模式匹配?

日期:2026-01-11 00:00 / 作者:夜晨
JavaScript正则表达式是RegExp对象,非字符串技巧而是文本解析基础设施;创建方式有字面量(编译于加载时,不支持变量)和构造函数(运行时编译,需手动转义反斜杠);test()返回布尔值适合校验,exec()返回匹配详情并维护lastIndex,match()在g标志下仅返回纯匹配数组;常见陷阱包括.不匹配换行(需s标志)、^/$默认不按行匹配(需m标志)、Unicode字符需u标志及属性类。

JavaScript 正则表达式是内置的模式匹配引擎,本质是一个 RegExp 对象,不是字符串处理的“高级技巧”,而是底层文本解析的基础设施。

正则表达式怎么创建?字面量 vs 构造函数有啥区别?

两种方式都能创建 RegExp 实例,但行为差异直接影响动态构建和错误排查:

test()exec()match() 该用哪个?

选错方法会导致空数组、null 或意外全局状态,尤其涉及 g 标志时:

const re = /(\d{4})-(\d{2})/g;
const str = "2025-01 2025-12";
console.log(re.exec(str)); // ["2025-01", "2025", "01", index: 0, ...]
console.log(str.match(re)); // ["2025-01", "2025-12"] —— 没有分组和位置

常见陷阱:点号不匹配换行、^/$ 的上下文、Unicode 字符

这些不是“怪癖”,而是正则引擎默认行为与实际需求错位的典型:

真正难的不是写出一个能跑的正则,而是当它在线上突然不匹配某条日志、或在某个用户的输入里反复返回 null 时,你能否快速定位是标志位缺失、转义遗漏,还是 Unicode 边界问题。