正则表达式是匹配字符串模式的工具,由模式和修饰符(如g、i、m)组成,JS支持字面量和RegExp构造函数两种创建方式,并提供match、replace、test等方法用于文本处理。
正则表达式(Regular Expression,简称 RegExp)是一种用于匹配字符串中字符模式的工具。它不是 JavaScript 独有,但 JS 提供了原生支持,可用于搜索、替换、提取和验证文本。
一个正则表达式通常由两部分构成:模式(pattern)和修饰符(flags)。模式写在斜杠 / 之间,修饰符跟在末尾,常见有:
例如:/abc/gi 表示全局、不区分大小写地查找 "abc"。
有两种常用方法:
const reg = /ab+c/i; —— 简洁,适合静态模式const reg = new RegExp('ab+c', 'i'); —— 适合动态拼接(比如从变量生成模式)注意:用 RegExp 构造时,反斜杠需双写(如 \d 表示数字),而字面量中只需单写(\d)。
JS 中主要通过字符串或 RegExp 对象的方法使用正则:
str.match(reg):返回匹配结果数组(含 index、input 等属性),无匹配返回 null
str.replace(reg, replacement):替换匹配内容,replacement 可为字符串或函数str.split(reg):按匹配分割字符串reg.test(str):返回布尔值,常用于表单验证(如邮箱、手机号)reg.exec(str):执行一次匹配,返回详细结果;配合 g 旗标可循环调用获取全部匹配示例:提取所有邮箱地址
const text = "联系我:a@b.com 或 x@y.org";
const emailReg = /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g;
console.log(text.match(emailReg)); // ["a@b.com", "x@y.org"]
初学容易卡在转义、贪婪匹配和边界上,记住这几个点:
.、
+、*、?、^、$、( )、[ ]、{ }、|、\ 需要加 \ 才表示字面意义(如匹配小数点写 \.)? 变成“懒惰匹配”(如 .*?)^ 和 $ 锚定开头结尾,避免部分匹配(如验证密码长度:^.{8,20}$)(...),捕获的内容可在 replace 中用 $1、$2 引用