### 常用正则表达式(总结归类)
#### 概述
本文将详细介绍一些常用的正则表达式,这些表达式广泛应用于各种场景中,如数据验证、文本处理等。我们将按照不同的分类来逐一介绍,并对每个正则表达式的用途进行解释。
#### 字符串与数字验证
##### 1. 匹配中文字符
**正则表达式**: `[\u4e00-\u9fa5]`
**解释**: 这个表达式用来匹配单个的中文字符。其中`\u4e00`到`\u9fa5`是Unicode编码范围内的中文字符。
##### 2. 匹配双字节字符
**正则表达式**: `[^x00-xff]`
**解释**: 此表达式用于匹配非ASCII字符,即双字节字符。这里的`[^x00-xff]`表示匹配除了ASCII码范围之外的所有字符。
##### 3. 匹配空格
**正则表达式**: `\s*|\s*$`
**解释**: 这个表达式用于匹配字符串开头或结尾的空格。其中`\s*`匹配开头的任意数量的空格,`\s*$`匹配结尾的任意数量的空格。
#### HTML标签处理
##### 1. 匹配HTML标签
**正则表达式**: `<(.*)>.*</\1>|<.*/>`
**解释**: 该表达式用于匹配HTML标签,包括自闭合标签。其中`<(.*)>`匹配开始标签,`</\1>`匹配对应的结束标签,`<.*/>`匹配自闭合标签。
#### 邮箱地址验证
##### 1. 验证邮箱地址
**正则表达式**: `w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*`
**解释**: 这个表达式用来验证邮箱地址是否符合标准格式。其中`w+`匹配一个或多个单词字符,`[-+.]w+`匹配邮箱用户名中的特殊字符,如“-”、“+”、“.”以及后面的字符。
#### URL地址验证
##### 1. 验证URL地址
**正则表达式**: `http://([w-]+.)+[w-]+(/[w-./?%&=]*)?`
**解释**: 该表达式用来验证HTTP协议下的URL地址是否有效。其中`http://`是URL的协议部分,`([w-]+.)+`匹配域名部分,`[w-./?%&=]*`匹配路径和查询字符串。
#### 用户名密码验证
##### 1. 验证用户名(字母开头5-16位)
**正则表达式**: `^[a-zA-Z][a-zA-Z0-9_]{4,15}$`
**解释**: 该表达式用来验证用户名是否符合规范,要求以字母开头,长度在5-16位之间,可以包含字母、数字和下划线。
#### 电话号码验证
##### 1. 验证电话号码
**正则表达式**: `d{3}-d{8}|d{4}-d{7}`
**解释**: 该表达式用来验证电话号码是否符合常见格式,例如0511-4405222或021-87888822。
#### QQ号码验证
##### 1. 验证QQ号码
**正则表达式**: `[1-9][0-9]{4,}`
**解释**: 这个表达式用来验证QQ号码是否有效。要求号码不能以0开头,且至少为5位数字。
#### 邮政编码验证
##### 1. 验证邮政编码
**正则表达式**: `[1-9]d{5}(?!d)`
**解释**: 该表达式用来验证中国的邮政编码是否正确。中国的邮政编码通常为6位数字,第一位不能为0。
#### 身份证号验证
##### 1. 验证身份证号
**正则表达式**: `d{15}|d{18}`
**解释**: 该表达式用来验证中国大陆居民身份证号码是否有效。中国大陆的身份证号码有15位和18位两种形式。
#### IP地址验证
##### 1. 匹配IP地址
**正则表达式**: `d+.d+.d+.d+`
**解释**: 这个表达式用来验证IPv4地址是否正确。每个段由1到3位数字组成,中间用点分隔。
#### 其他常见应用场景
##### 1. 匹配纯数字
**正则表达式**: `^[0-9]*$`
**解释**: 该表达式用来验证字符串是否全部由数字组成。
##### 2. 匹配n位数字
**正则表达式**: `^d{n}$`
**解释**: 该表达式用来验证字符串是否正好由n位数字组成。
##### 3. 匹配n位以上数字
**正则表达式**: `^d{n,}$`
**解释**: 该表达式用来验证字符串是否至少由n位数字组成。
##### 4. 匹配m-n位数字
**正则表达式**: `^d{m,n}$`
**解释**: 该表达式用来验证字符串是否由m至n位之间的数字组成。
##### 5. 匹配非负整数
**正则表达式**: `^(0|[1-9][0-9]*)$`
**解释**: 该表达式用来验证字符串是否是非负整数。
##### 6. 匹配带两位小数的非负实数
**正则表达式**: `^[0-9]+(.[0-9]{2})?$`
**解释**: 该表达式用来验证字符串是否是非负实数,且最多带两位小数。
##### 7. 匹配英文大写字母
**正则表达式**: `^[A-Z]+$`
**解释**: 该表达式用来验证字符串是否全部由英文大写字母组成。
##### 8. 匹配英文小写字母
**正则表达式**: `^[a-z]+$`
**解释**: 该表达式用来验证字符串是否全部由英文小写字母组成。
##### 9. 匹配英文大小写字母加数字
**正则表达式**: `^[A-Za-z0-9]+$`
**解释**: 该表达式用来验证字符串是否全部由英文大小写字母和数字组成。
#### 实际应用案例
##### 1. 获取字符串长度(双字节字符)
**JavaScript代码**:
```javascript
String.prototype.len = function() {
return this.replace(/[^x00-xff]/g, "aa").length;
}
```
**解释**: 通过将所有双字节字符替换为两个字符的字符串来计算字符串的实际显示长度。
##### 2. 去除字符串首尾空格
**JavaScript代码**:
```javascript
String.prototype.trim = function() {
return this.replace(/(^s*)|(s*$)/g, "");
}
```
**解释**: 使用此方法可以去除字符串开头和结尾的空白字符。
##### 3. IP地址转换为数值
**JavaScript代码**:
```javascript
function IP2V(ip) {
re = /(d+).(d+).(d+).(d+)/g;
if (re.test(ip)) {
return RegExp.$1 * 256 * 256 * 256 + RegExp.$2 * 256 * 256 + RegExp.$3 * 256 + RegExp.$4;
}
}
```
**解释**: 此函数可以将IPv4地址转换为其对应的数值表示。
以上列举了多种常见的正则表达式及其应用场景,这些正则表达式在实际开发中非常有用,能够帮助开发者快速地完成数据验证、文本解析等任务。