JS正则表达式完全解析
52 浏览量
更新于2024-07-15
收藏 164KB PDF 举报
"本文详细介绍了JavaScript中的正则表达式语法,包括普通字符的匹配、简单的转义字符的使用以及能够匹配多种字符的表达式。通过实例解析了如何进行字符串匹配和定位。"
在JavaScript中,正则表达式是用于模式匹配和字符串处理的重要工具。它们遵循一套特定的规则,使得我们能高效地查找、替换和分割字符串。
1. **正则表达式规则**
- **普通字符**:包括字母、数字、汉字、下划线以及未被特殊定义的标点符号。例如,表达式 "c" 在字符串 "abcde" 中能成功匹配到字符 "c",位置从2开始到3结束(注意,下标通常从0开始计数)。
- **简单的转义字符**:使用反斜杠(/)来转义特殊字符,使其匹配自身。如 /\r/ 匹配回车, /\n/ 匹配换行, /\t/ 匹配制表符,而 /^ 和 /$/ 分别匹配字符串中的 "^" 和 "$" 符号。例如,表达式 "/$d" 可以在字符串 "abc$de" 中成功匹配 "$d",位置从3到5。
2. **能够与多种字符匹配的表达式**
- **\d**:匹配任何数字,相当于 `[0-9]`,例如,"/d/d" 在 "abc123" 中匹配 "12",位置从3到5。
- **\w**:匹配任何字母、数字或下划线,等同于 `[A-Za-z0-9_]`。例如,表达式 "/\w+/g" 可以匹配字符串 "Hello_world123!" 中的所有单词字符。
- **\s**:匹配任何空白字符,包括空格、制表符和换页符。例如,"/\s+" 可以匹配连续的多个空白字符。
- **\.**:小数点在正则表达式中具有特殊含义,但使用转义符后,/\./ 可以匹配小数点自身,除了换行符。
3. **量词**:正则表达式中还可以使用量词来指定某个字符或模式出现的次数。例如:
- `*`:匹配前面的字符0次或无限次。
- `+`:匹配前面的字符1次或无限次。
- `?`:匹配前面的字符0次或1次。
- `{n}`:匹配前面的字符正好n次。
- `{n,}`:匹配前面的字符至少n次。
- `{n,m}`:匹配前面的字符至少n次,但不超过m次。
4. **预定义字符类**:JavaScript还提供了预定义的字符类,如:
- **\d**:等价于 `[0-9]`,匹配数字。
- **\D**:等价于 `[^0-9]`,匹配非数字。
- **\w**:等价于 `[A-Za-z0-9_]`,匹配字母、数字或下划线。
- **\W**:等价于 `[^A-Za-z0-9_]`,匹配非字母、数字或下划线。
- **\s**:等价于 `[ \f\n\r\t\v\u00A0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]`,匹配空白字符。
- **\S**:等价于 `[^ \f\n\r\t\v\u00A0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]`,匹配非空白字符。
5. **边界匹配**:
- **^**:匹配输入字符串的开始位置。
- **$**:匹配输入字符串的结束位置。
- **\b**:匹配单词边界,例如 "word\b" 将匹配 "word" 但不匹配 "words"。
- **\B**:匹配非单词边界,例如 "\Bword" 将匹配 "words" 中的 "word"。
6. **分组与捕获**:使用圆括号 `()` 可以创建一个分组,捕获匹配的子串。例如,/(ab)+/ 匹配 "ab" 或 "abab" 等。
7. **非捕获组**:使用 `(?:...)` 创建非捕获组,不保存匹配的子串,用于组合正则表达式。
8. **选择与交替**:使用 `|` 符号表示或操作,例如 `/red|blue/` 可以匹配 "red" 或 "blue"。
通过掌握这些基本概念,开发者可以在JavaScript中编写复杂的正则表达式,以满足各种字符串处理需求。了解正则表达式不仅能提高代码效率,还能让你在处理字符串时更加得心应手。
2018-11-07 上传
2022-08-04 上传
2009-09-16 上传
2020-10-23 上传
点击了解资源详情
2020-10-24 上传
2020-11-24 上传
2021-10-10 上传
2011-11-16 上传
weixin_38738983
- 粉丝: 5
- 资源: 872
最新资源
- NIST REFPROP问题反馈与解决方案存储库
- 掌握LeetCode习题的系统开源答案
- ctop:实现汉字按首字母拼音分类排序的PHP工具
- 微信小程序课程学习——投资融资类产品说明
- Matlab犯罪模拟器开发:探索《当蛮力失败》犯罪惩罚模型
- Java网上招聘系统实战项目源码及部署教程
- OneSky APIPHP5库:PHP5.1及以上版本的API集成
- 实时监控MySQL导入进度的bash脚本技巧
- 使用MATLAB开发交流电压脉冲生成控制系统
- ESP32安全OTA更新:原生API与WebSocket加密传输
- Sonic-Sharp: 基于《刺猬索尼克》的开源C#游戏引擎
- Java文章发布系统源码及部署教程
- CQUPT Python课程代码资源完整分享
- 易语言实现获取目录尺寸的Scripting.FileSystemObject对象方法
- Excel宾果卡生成器:自定义和打印多张卡片
- 使用HALCON实现图像二维码自动读取与解码