后端
正则表达式分组
1. 正则表达式分组
| 概念 | 说明 | 示例 |
|---|---|---|
| 分组 | 使用 () 可以创建分组,分组可以将多个字符作为一个整体进行处理 | /(ab)+/ 表示匹配连续出现的 ab |
| 分组捕获 | 分组会捕获匹配的内容,可以在替换时使用 $1, $2 等引用捕获的内容 | '2023-01-01'.replace(/(\d{4})-(\d{2})-(\d{2})/, '$2/$3/$1') // 结果为 '01/01/2023' |
2. 分组的高级用法
2.1 日期格式转换
javascript
// 将 2023-01-01 转换为 01/01/2023
'2023-01-01'.replace(/(\d{4})-(\d{2})-(\d{2})/, '$2/$3/$1')
// 结果: '01/01/2023'2.2 提取邮箱用户名
javascript
// 从邮箱地址中提取用户名
'example@domain.com'.replace(/(\w+)@(\w+\.\w+)/, '$1')
// 结果: 'example'2.3 姓名反转
javascript
// 将 "John Doe" 转换为 "Doe, John"
'John Doe'.replace(/(\w+)\s(\w+)/, '$2, $1')
// 结果: 'Doe, John'2.4 重复字符匹配
javascript
// 匹配连续出现的 "ab"
/(ab)+/.test('ababab') // true
/(ab)+/.test('abc') // true
/(ab)+/.test('a') // false3. 非捕获分组
| 语法 | 说明 | 示例 |
|---|---|---|
(?:表达式) | 非捕获分组,不创建捕获组 | /(?:ab)+/.test('abab') // true |
4. 嵌套分组
javascript
// 分组可以嵌套使用
'2023-01-01'.match(/(\d{4}-(\d{2})-(\d{2}))/)
// 结果: ['2023-01-01', '2023-01-01', '01', '01']
// match[0] 是完整匹配
// match[1] 是第一个分组 (\d{4}-(\d{2})-(\d{2}))
// match[2] 是第二个分组 (\d{2})
// match[3] 是第三个分组 (\d{2})