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,让 . 匹配换行符)。
常见匹配模式示例
以下是最常遇到的几类需求及对应正则写法(均已验证可用):
立即学习“Java免费学习笔记(深入)”;
-
手机号(国内 11 位,以 1 开头):
/^1[3-9]\d{9}$/ -
邮箱地址:
/^[^\s@]+@[^\s@]+\.[^\s@]+$/(基础校验,不覆盖所有 RFC 规则) -
中文字符:
/[\u4e00-\u9fa5]/(匹配单个中文)或/[\u4e00-\u9fa5]+/(连续中文) - URL(HTTP/HTTPS):
- 密码强度(至少 8 位,含大小写字母和数字):
^(?=.*[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标志才匹配 - 贪婪匹配(如
.*)可能过度匹配,改用惰性量词(.*?)更可控 - 敏感信息(如密码、token)不要仅靠前端正则校验,后端必须二次验证











