JavaScript正则表达式通过RegExp对象或字面量创建,核心为“模式+标志”,常用标志有g、i、m、u、s;支持test()、match()、replace()、split()等方法;示例包括手机号/^1[3-9]\d{9}$/、邮箱、中文、URL匹配。
JavaScript 中正则表达式通过 RegExp 对象或字面量(如 /pattern/flags)创建,核心在于“模式 + 标志”组合,配合字符串方法(test()、match()、replace()、split() 等)完成匹配与处理。
正则可写成字面量形式(推荐用于静态模式)或构造函数形式(适合动态拼接):
/\d+/g —— 匹配一个或多个数字,全局搜索
new RegExp("\\d+", "g") —— 动态创建,注意反斜杠需双写常用标志(flags):g(全局)、i(忽略大小写)、m(多行模式)、u(支持 Unicode)、s(dotAll,让 . 匹配换行符)。
以下是最常遇到的几类需求及对应正则写法(均已验证可用):
/^1[3-9]\d{9}$/
/^[^\s@]+@[^\s@]+\.[^\s@]+$/(基础校验,不覆盖所有 RFC 规则)/[\u4e00-\u9fa5]/(匹配单个中文)或 /[\u4e00-\u9fa5]+/(连续中文)^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$(需用 test() 配合)正则在字符串上的典型用法:
str.test(/pattern/) → 返回布尔值,判断是否匹配str.match(/pattern/g) → 返回匹配结果数组(无 g 则返回带 index、groups 的对象)str.replace(/pattern/, "new") → 替换第一个匹配;加 g 替换全部str.split(/pattern/) → 按匹配内容切分字符串捕获组用 (),命名捕获组(ES2018+)写法:/(?,可通过 result.groups.year 取值。
实际使用中容易出错的地方:
/\d/),但构造函数中字符串需转义("\\d")^ 和 $ 在非 m 模式下只匹配整个字符串首尾,不是每行. 默认不匹配换行符,需要 s 标志才匹配.*)可能过度匹配,改用惰性量词(.*?)更可控