JavaScript正则表达式有字面量(如/abc/g)和构造函数(new RegExp("abc","g"))两种创建方式;前者语法简洁、性能好,适合静态规则;后者支持动态拼接,但需注意双重转义和注入风险。
javascript 中正则表达式主要有两种创建方式:字面量写法和构造函数写法。
字面量写法(推荐)
直接用一对斜杠 / 包裹匹配模式,后跟可选修饰符。语法简洁、性能更好,适合静态规则。
例如:
-
/abc/g—— 全局匹配字符串 "abc" -
/^d+$/i—— 忽略大小写,匹配纯数字开头结尾的字符串
注意:斜杠之间的内容是原样解析的,特殊字符如 .、*、(、[ 等需加反斜杠转义,比如匹配实际的点号要写成 .。
构造函数写法(new RegExp)
适用于需要动态拼接规则的场景,比如从变量、用户输入或接口数据中生成正则。
语法:new RegExp(pattern, flags)
其中 pattern 是字符串,flags 是可选的修饰符字符串(如 "gi")。
关键细节:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- pattern 中的反斜杠需双重转义,因为字符串本身会先解析一次
例如:想匹配d+,要写成new RegExp("\d+", "g") - 想匹配字面量
.,得写成new RegExp("\.") - 若 pattern 来自不可信输入,需谨慎处理,避免注入风险
两种方式的等价性与选择建议
-
/abc/g和new RegExp("abc", "g")功能一致 - 字面量更直观、执行更快,适合固定规则(如邮箱校验、手机号格式)
- 构造函数更灵活,适合运行时生成(如搜索高亮、按关键词动态过滤)
- 多数情况下优先用字面量;只有 pattern 需要变量拼接时才用 new RegExp

















