正则表达式是JavaScript中用于文本匹配、提取、替换和验证的声明式高效工具;支持字面量和构造函数创建,常用test、exec、match、replace、split等方法,适合格式校验但需规避过度复杂与转义陷阱。
JavaScript 中的正则表达式(Regular Expression,简称 RegExp)是处理字符串的强大工具,核心用途是**文本匹配、提取、替换和验证**。它不是“必须用”,但在涉及动态、模式化文本操作时,比手写循环或条件判断更简洁、高效、可维护。
有两种方式创建正则对象:
/\d{3}-\d{4}/ 匹配形如 "123-4567" 的电话片段;new RegExp('pattern', 'flags'),适合 pattern 来自变量或需动态拼接的场景,比如 new RegExp(`^${username}$`, 'i')。常用方法包括:
test(str):返回布尔值,常用于表单验证(如邮箱格式是否合法);exec(str):返回匹配结果数组(含 index、groups 等),适合逐个提取;str.match(reg):返回所有匹配项组成的数组(加 g 标志)或首个匹配详情;str.replace(reg, replacement):按模式替换内容,支持函数回调做复杂替换;str.split(reg):用正则作分隔符拆分字符串,比固定字符更灵活(如按空白、标点或多种分隔符统一处理)。因为它把“要找什么”直接描述成**声明式规则**,而不是一步步告诉程序怎么找。比如匹配邮箱:
立即学习“Java免费学习笔记(深入)”;
/^[^\s@]+@[^\s@]+\.[^\s@]+$/——清晰表达“非空用户名 + @ + 非空域名 + . + 非空后缀”;验证本质是“判断输入是否符合某类规范”,而这正是正则最自然的表达场景:
/(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}/ 表示“至少一个大小写字母、一个数字、总长不小于 8”;/^\d{17}[\dXx]$/ 直接约束结构
,比写 18 层 if 更直观;^https?:\/\/[^\s/$.?#].[^\s]*$ 拦住明显非法格式,前端快速反馈,减少无效请求。注意:正则适合做初步、轻量、格式性验证;深度业务校验(如身份证校验码、银行卡 Luhn 算法)仍需配合 JS 逻辑。
^ 和 $ 锚定首尾,避免部分匹配(如 /abc/ 会匹配 "xabcx",而 /^abc$/ 只认纯 "abc");lastIndex 状态,重复调用 exec 前记得重置或用字面量(无状态);. * + ? ^ $ \ | [ ] ( ) { })需转义才能表示字面意义,可用 RegExp.escape(暂未标准化,需自行实现);