JavaScript正则表达式是高效处理字符串验证、提取、替换和分割的工具,核心在于正确编写模式、选择合适方法(如test()用于验证、match()用于提取)并理解标志(g/i/m)与元字符(\d/\w/\s/.等)行为。
JavaScript 正则表达式(RegExp)是处理字符串验证、提取、替换和分割的高效工具。核心在于写对模式、选对方法,并理解匹配行为(全局、忽略大小写、多行等)。用得好,几行代码就能替代大量 if 判断和循环。
正则表达式由模式(pattern)和可选标志(flags)组成,可写作字面量形式 /pattern/flags 或构造函数 new RegExp('pattern', 'flags')。
g(全局匹配)、i(忽略大小写)、m(多行模式,让 ^ 和 $ 匹配每行起止)\d(数字)、\w(单词字符)、\s(空白符)、.(除换行外任意字符)、^(开头)、$(结尾)*(0次或多次)、+(1次或多次)、?(0次或1次),默认贪婪匹配;加 ? 变懒惰,如 .*?
验证场景(如邮箱、手机号、密码强度)优先用 RegExp.prototype.test()——返回布尔值,性能好、语义清晰。
/^[^\s@]+@[^\s@]+\.[^\s@]+$/i.test(email)(注意:真实邮箱规则极复杂,此为简化版,生产环境建议用专用库或后端校验)/(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}/.test(pwd)(利用正向先行断言 (?=...) 检查多个条件)match() 做验证——它返回数组或 null,需额外判空;test() 更直接从文本中抽关键信息(如URL、日期、
ID),关键是设计带捕获组 (...) 的模式,并配合合适方法。
str.match(/(\d{4})-(\d{2})-(\d{2})/) 返回数组:["2025-12-25", "2025", "12", "25"],下标 1~3 是各组内容g 标志:"a1 b2 c3".match(/\d/g) → ["1","2","3"]
exec() 循环调用(它会更新 lastIndex);replace() 第二参数可为函数,接收捕获组作为参数,适合动态替换正则容易写出却难维护,几个关键细节决定成败:
new RegExp('\\d+') ,因为字符串先解析一次转义,再传给 RegExp(a+)+b 在长字符串上可能引发“灾难性回溯”,导致卡死;优先用原子组或固化分组(ES2025+ 支持 (?>...))/x 标志需浏览器支持,更推荐用变量拼接 + 注释说明逻辑)