### 正则表达式知识点详解 #### 一、正则表达式概述 正则表达式是一种功能强大的文本处理工具,它能够帮助用户实现对字符串进行复杂的查找与替换操作。正则表达式的应用非常广泛,包括但不限于数据验证、文本搜索、格式化等场景。 #### 二、基本语法及符号说明 在正则表达式中,有一些基本的符号及其含义: - **字符类** - `\s`:匹配任何空白字符,包括空格、制表符、换页符等。 - `\S`:匹配任何非空白字符。 - `\d`:匹配数字(0-9)。 - `\D`:匹配非数字。 - `\w`:匹配字母、数字或下划线。 - `\W`:匹配非字母、非数字、非下划线。 - `.`:匹配除换行符外的任意单个字符。 - **定位符** - `^`:匹配字符串的开头位置。 - `$`:匹配字符串的结尾位置。 - **量词** - `+`:匹配前面的子表达式一次或多次。 - `*`:匹配前面的子表达式零次或多次。 - `?`:匹配前面的子表达式零次或一次。 - `{n}`:精确地匹配前面的子表达式恰好n次。 - `{n,}`:匹配前面的子表达式至少n次。 - `{n,m}`:匹配前面的子表达式至少n次,但不超过m次。 - **特殊符号** - `[ ]`:字符集,表示匹配括号内的任何一个字符。 - `|`:或运算符,表示匹配前面的表达式或后面的表达式。 #### 三、示例解析 下面是一些具体的正则表达式实例: 1. **匹配6位数字**:`\d{6}` - 示例:`123456` 2. **匹配3到6位数字**:`\d{3,6}` - 示例:`123` 或 `123456` 3. **匹配一位或多位数字**:`\d+` - 示例:`123` 或 `1234567890` 4. **匹配零位或一位数字后面跟着6位数字**:`\d?\d{6}` - 示例:`123456` 或 `123456` 5. **匹配字母前缀后跟1到4位数字**:`[TKL]\d{1,4}` - 示例:`T1` 或 `K1234` 6. **匹配精确6位数字并位于字符串开头和结尾**:`^\d{6}$` - 示例:`123456` 7. **匹配正负整数**:`^-?[0-9]+$` - 示例:`123` 或 `-123` 8. **匹配浮点数**:`^-?\d+(\.\d+)?$` - 示例:`123.45` 或 `-123.45` 9. **匹配小数**:`^(-?[0-9]+(\.[0-9]+)?)$` - 示例:`123.45` 或 `-123.45` 10. **匹配26个英文字母**:`^[A-Za-z]+$` - 示例:`Abcdefg` 11. **匹配大写字母**:`^[A-Z]+$` - 示例:`ABCDEFG` 12. **匹配小写字母**:`^[a-z]+$` - 示例:`abcdefg` 13. **匹配字母和数字**:`^[A-Za-z0-9]+$` - 示例:`Abc123` 14. **匹配电子邮件地址**:`^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$` - 示例:`example@example.com` 15. **匹配身份证号码**:`\d{17}(\d|X)` - 示例:`123456198701011234X` 16. **匹配中文字符**:`^[\u4e00-\u9fa5]+$` - 示例:`中文` 17. **匹配电话号码**:`^((\d{3,4})|(\d{3,4}-))?(\d{7,8})$` - 示例:`12345678` 或 `123-4567` 18. **匹配月份中的日期**:`^(0?[1-9]|[12][0-9]|30|31)$` - 示例:`31` 或 `09` #### 四、实际应用场景 正则表达式不仅限于简单的匹配,还可以应用于各种实际场景中: 1. **字符串长度计算**:通过替换非ASCII字符来计算字符串的实际长度。 ```javascript String.prototype.len = function () { return this.replace(/[^x00-xff]/g, "aa").length; } ``` 2. **字符串去空格**:去除字符串前后两端的空白字符。 ```javascript String.prototype.trim = function () { return this.replace(/(^s*)|(s*$)/g, ""); }; ``` 3. **IP地址转换为数值**:将IP地址转换为其对应的十进制数值。 ```javascript function IP2V(ip) { let re = /(\d+)\.(\d+)\.(\d+)\.(\d+)/g; if (re.test(ip)) { return RegExp.$1 * Math.pow(255, 3) + RegExp.$2 * Math.pow(255, 2) + RegExp.$3 * 255 + RegExp.$4 * 1; } else { throw new Error("Not a valid IP address!"); } } ``` 4. **提取URL中的文件名**:从URL中获取文件名部分。 ```javascript let s = "http://www.9499.net/page1.htm"; s = s.replace(/(.*/){0,}([^.]+).*/ig, "$2"); // 输出结果:Page1.htm ``` 5. **限制输入框内容**:在网页中限制输入框只能输入特定类型的内容,如中文、全角字符、数字或英文字符。 ```html <input type="text" onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^u4E00-u9FA5]/g,''))"> ``` 以上就是关于正则表达式的基本概念和常见应用场景的详细介绍。掌握这些知识点对于从事编程开发和数据处理的人来说是非常有用的。
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- WixToolset.DirectX.wixext - DirectX WiX 工具集扩展.zip
- XAPP583示例代码
- Windows 界面组合引擎是一个用于创建 Windows 应用程序的 .NET C# UI 引擎 .zip
- Ruby编程语言及相关框架的学习资源汇总
- matlab实现阶次分析完整代码文件
- Windows 版 DirectStorage 是一种 API,它允许游戏开发人员充分发挥高速 NVMe 驱动器的潜力来加载游戏资产 .zip
- Windows 游戏和 DirectX SDK 博客.zip
- 高性能恒流恒压原边控制功率开关DP3701X详解
- Rust学习资源概述及应用实践
- 转换px单位为rpx等任意单位-小程序 附完整源码,一键运行