JavaScript正则表达式可通过字面量(如/\d{3}-\d{4}/)或RegExp构造函数创建,需正确编写模式与标志(g/i/m/s),并配合test()、match()、exec()匹配及replace()替换文本。

JavaScript 正则表达式用 RegExp 对象或字面量(如 /pattern/flags)创建,核心是写对模式(pattern)和选对标志(flags),再配合字符串方法完成匹配与替换。
基础写法:字面量 vs 构造函数
两种方式都能创建正则对象,但适用场景不同:
- 字面量:
/\d{3}-\d{4}/—— 模式固定、无变量时更简洁,性能略好 - 构造函数:
new RegExp('\\d{3}-\\d{4}')—— 模式含变量或动态拼接时必须用,注意反斜杠要双写(字符串转义)
常用标志(flags)怎么选
标志决定匹配行为,常组合使用:
-
g:全局匹配(不加只找第一个) -
i:忽略大小写(如/hello/i匹配"Hello") -
m:多行模式(让^和$匹配每行起止) -
s(ES2018+):点号.匹配换行符(默认不匹配)
匹配文本:用 test()、match()、exec()
根据需求选方法:
立即学习“Java免费学习笔记(深入)”;
-
reg.test(str):返回true/false,适合条件判断(如表单校验) -
str.match(reg):返回匹配数组(含index、input等属性),全局时返回所有匹配项;无匹配返回null -
reg.exec(str):返回单个匹配结果(含捕获组),配合g标志可循环调用获取全部(适合需逐个处理的场景)
替换文本:replace() 的关键细节
str.replace(reg, replacement) 是主力方法,replacement 可以是字符串或函数:
- 字符串中可用特殊符号:
$1表示第一个捕获组,$&表示整个匹配,$$表示一个$ - 用函数更灵活:如
str.replace(/(\w+)/g, (match, p1) => p1.toUpperCase()),参数依次为完整匹配、捕获组、索引、原字符串 - 注意:不加
g标志只替换第一个;想全替换必须带g
不复杂但容易忽略。











