【javascript正则表达式】在JavaScript中,正则表达式(Regular Expression)是一种强大的工具,用于匹配、查找、替换字符串中的特定模式。它广泛应用于表单验证、文本处理、数据提取等场景。掌握正则表达式可以极大提升代码的灵活性和效率。
一、正则表达式基础语法
正则表达式由字面量或构造函数创建,支持多种元字符和修饰符来定义匹配规则。以下是一些常见的语法结构:
| 符号 | 含义 | 示例 | ||
| `/.../` | 正则表达式字面量 | `/abc/` | ||
| `new RegExp()` | 构造函数方式 | `new RegExp('abc')` | ||
| `^` | 匹配开头 | `/^a/` 匹配以 a 开头的字符串 | ||
| `$` | 匹配结尾 | `/b$/` 匹配以 b 结尾的字符串 | ||
| `.` | 匹配任意单个字符(除换行符外) | `/a.c/` 匹配 "abc", "aac" 等 | ||
| `` | 前一个字符出现0次或多次 | `/a/` 匹配 "", "a", "aa" 等 | ||
| `+` | 前一个字符出现1次或多次 | `/a+/` 匹配 "a", "aa", "aaa" 等 | ||
| `?` | 前一个字符出现0次或1次 | `/a?b/` 匹配 "b", "ab" | ||
| `[]` | 匹配括号内的任意一个字符 | `/[abc]/` 匹配 a、b 或 c | ||
| `[^]` | 匹配不在括号内的字符 | `/[^abc]/` 匹配不是 a、b 或 c 的字符 | ||
| ` | ` | 或关系 | `/a | b/` 匹配 a 或 b |
| `()` | 分组 | `/(abc)/` 将 abc 视为一个整体 |
二、常用方法与属性
JavaScript 提供了多个方法用于操作正则表达式,以下是常见方法及其功能说明:
| 方法 | 描述 | 示例 |
| `test()` | 检查是否匹配 | `/abc/.test("abc")` 返回 true |
| `exec()` | 执行匹配并返回结果数组 | `/abc/.exec("abc")` 返回 ["abc"] |
| `match()` | 字符串方法,用于匹配 | `"abc".match(/abc/)` 返回 ["abc"] |
| `replace()` | 替换匹配内容 | `"hello".replace(/l/g, "x")` 返回 "hexxo" |
| `search()` | 查找匹配位置 | `"hello".search(/l/)` 返回 2 |
| `split()` | 根据正则分割字符串 | `"a,b,c".split(/,/)` 返回 ["a", "b", "c"] |
三、修饰符(Flags)
修饰符用于修改正则表达式的匹配行为,常见的有:
| 修饰符 | 含义 | 示例 |
| `g` | 全局匹配 | `/a/g` 匹配所有 a |
| `i` | 忽略大小写 | `/a/i` 匹配 A、a |
| `m` | 多行匹配 | `/^a/m` 匹配每一行的开头 |
| `s` | 让 `.` 匹配包括换行符 | `/a.b/s` 匹配 "a\nb" |
| `y` | 粘性匹配(从当前位置开始) | `/a/y` 从指定位置开始匹配 |
四、常用正则表达式示例
以下是一些实际开发中常用的正则表达式:
| 场景 | 正则表达式 | 说明 |
| 邮箱验证 | `/^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/` | 简单邮箱格式 |
| 手机号验证 | `/^1[3-9]\d{9}$/` | 中国大陆手机号 |
| 密码强度 | `/^(?=.\d)(?=.[a-z])(?=.[A-Z]).{8,}$/` | 至少包含数字、大小写字母,长度≥8 |
| URL验证 | `/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-])\/?$/` | 基本URL格式 |
| 中文字符 | `/[\u4e00-\u9fa5]/` | 匹配中文汉字 |
五、总结
JavaScript 正则表达式是处理字符串的强大工具,通过灵活使用元字符、修饰符和内置方法,可以实现复杂的文本匹配与处理逻辑。虽然正则表达式语法相对复杂,但一旦掌握,将极大提升开发效率和代码质量。建议在实际项目中结合具体需求逐步学习和实践。


