javascript如何实现正则表达式_常见匹配模式有哪些

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,让 . 匹配换行符)。

常见匹配模式示例

以下是最常遇到的几类需求及对应正则写法(均已验证可用):

  • 手机号(国内 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 则返回带 indexgroups 的对象)
  • str.replace(/pattern/, "new") → 替换第一个匹配;加 g 替换全部
  • str.split(/pattern/) → 按匹配内容切分字符串

捕获组用 (),命名捕获组(ES2018+)写法:/(?\d{4})-(?\d{2})/,可通过 result.groups.year 取值。

注意事项与避坑点

实际使用中容易出错的地方:

  • 字面量中反斜杠不用双写(/\d/),但构造函数中字符串需转义("\\d"
  • ^$ 在非 m 模式下只匹配整个字符串首尾,不是每行
  • . 默认不匹配换行符,需要 s 标志才匹配
  • 贪婪匹配(如 .*)可能过度匹配,改用惰性量词(.*?)更可控
  • 敏感信息(如密码、token)不要仅靠前端正则校验,后端必须二次验证