JavaScript正则表达式用于匹配、查找、替换文本模式,支持字面量(/abc/)和构造函数(new RegExp())两种创建方式,常用标志有g、i、m;核心方法包括test(返回布尔)、match(返回数组)、exec(返回详细匹配对象);元字符如\d、\w、\s及量词+*?、捕获组()、转义(.)等需熟练掌握;replace支持字符串或函数替换,split可用正则分割;注意字符串中反斜杠需双写\\。

JavaScript 正则表达式(RegExp)是用来匹配、查找、替换文本中特定模式的工具。核心在于写对模式(pattern),再用字符串方法或 RegExp 对象调用它。
基础写法:字面量 vs 构造函数
两种创建正则的方式,常用字面量更简洁:
- /abc/ —— 匹配连续的 "a"、"b"、"c"
-
new RegExp("abc") —— 动态拼接时用,比如变量参与模式:
new RegExp(patternStr, "g")
末尾可加标志(flags),常见有:g(全局)、i(忽略大小写)、m(多行模式)。例如 /hello/gi 会找所有 "hello",不区分大小写。
常用匹配方法:test、match、exec
test() 最轻量,只返回 true 或 false:
立即学习“Java免费学习笔记(深入)”;
const re = /cat/;
re.test("The cat sat"); // true
match() 在字符串上调用,返回匹配结果数组(无 g 时只返第一个+捕获组;有 g 时只返匹配项):
"I have 2 cats and 3 dogs".match(/\d+/g); // ["2", "3"]
exec() 是 RegExp 对象的方法,每次调用返回一个结果(含索引、捕获组等),配合 g 可循环遍历:
const re = /(\w+)\s+(\d+)/g;
let match;
while ((match = re.exec("apple 12 banana 34")) !== null) {
console.log(match[0]); // "apple 12", "banana 34"
console.log(match[1]); // "apple", "banana"
}
实用元字符和模式技巧
不必死记所有符号,先掌握高频组合:
-
\d匹配数字,\w匹配字母/数字/下划线,\s匹配空白 -
+表示“一个或多个”,*是“零个或多个”,?是“零个或一个” -
[a-z]匹配小写字母,[^0-9]匹配非数字(^在中括号内表否定) - 用
()括起来的部分是“捕获组”,后续可通过match[1]、match[2]取出 - 想匹配真实点号
.?要转义:\.;同理,\$、\+等特殊字符都需加反斜杠
替换与分割:replace 和 split
replace() 支持用字符串或函数做替换:
"price: $19.99".replace(/\$(\d+\.\d+)/, "¥$1"); // "price: ¥19.99"
其中 $1 引用第一个捕获组;若用函数,参数包含匹配项、分组、位置等,灵活性更高。
split() 也能用正则切分字符串,比固定分隔符更强大:
"a1b22c333".split(/\d+/); // ["a", "b", "c", ""]
不复杂但容易忽略细节:正则中的反斜杠在字符串里要写两道 \\(比如 "\\d+"),而字面量里只写一道 /\d+/。写错就匹配不到,调试时可先用 console.log(re.toString()) 看实际模式。











