### 正则表达式大全-技术类文档
本文档旨在为读者提供全面且系统的正则表达式知识总结,包括各种常见的数字、字符、邮箱、网址等格式的匹配规则。正则表达式是一种强大的文本处理工具,在数据清洗、验证以及提取等方面有着广泛的应用。
#### 数字模式
1. **纯数字**:
- `^[0-9]*$`:匹配任何数量(包括0个)的数字。
2. **固定长度数字**:
- `^\d{n}$`:匹配确切`n`个数字。
3. **最小长度数字**:
- `^\d{n,}$`:匹配至少`n`个数字。
4. **指定范围长度数字**:
- `^\d{m,n}$`:匹配长度在`m`到`n`之间的数字。
5. **非负整数**:
- `^(0|[1-9][0-9]*)$`:匹配0或任意非零开头的整数。
6. **非零小数**:
- `^([1-9][0-9]*)+(.[0-9]{1,2})?$`:匹配一个非零整数后跟可选的小数部分,小数部分最多两位。
7. **带负号的两位小数**:
- `^(\-)?\d+(\.\d{1,2})?$`:匹配可能带有负号的整数,后面跟着一位或两位小数。
8. **带符号的小数**:
- `^(\-|\+)?\d+(\.\d+)?$`:匹配带有一个或没有正负号的整数,后面跟着至少一位小数。
9. **带两位小数的非负数**:
- `^[0-9]+(.[0-9]{2})?$`:匹配一个非负整数,后面跟着两位小数。
10. **带一到三位小数的非负数**:
- `^[0-9]+(.[0-9]{1,3})?$`:匹配一个非负整数,后面跟着一到三位小数。
11. **非零整数**:
- `^[1-9]\d*$`:匹配所有不以0开头的正整数。
- `^([1-9][0-9]*){1,3}$`:匹配一个由一到三个非零整数组成的序列。
- `^\+?[1-9][0-9]*$`:匹配正数,可带加号。
12. **负整数**:
- `^\-[1-9][]0-9"*$`:匹配以负号开头的非零整数。
- `^-[1-9]\d*$`:匹配以负号开头的非零整数。
13. **自然数**:
- `^\d+$`:匹配任何非负整数。
- `^[1-9]\d*|0$`:匹配任何非负整数,包括0。
14. **非正整数**:
- `^-?[1-9]\d*|0$`:匹配任何非正整数,包括0。
- `^((-\d+)|(0+))$`:匹配任何非正整数,包括0。
15. **非负小数**:
- `^\d+(\.\d+)?$`:匹配任何非负数,可以是整数或带小数部分的数。
- `^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$`:匹配任何非负数,包括整数和小数。
16. **非正小数**:
- `^((-\d+(\.\d+)?)|(0+(\.0+)?))$`:匹配任何非正数,包括整数和小数。
- `^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$`:匹配任何非正数,包括整数和小数。
17. **非零小数**:
- `^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$`:匹配任何非零小数,包括正数和负数。
- `^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$`:匹配任何非零小数,包括正数和负数。
18. **带负号的非零小数**:
- `^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$`:匹配带负号的非零小数。
- `^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$`:匹配带负号的非零小数。
19. **带符号的非零数**:
- `^(-?\d+)(\.\d+)?$`:匹配带有一个或没有正负号的非零数,后面跟着至少一位小数。
- `^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$`:匹配带有一个或没有正负号的非零数,后面跟着至少一位小数。
#### 字符模式
1. **汉字**:
- `^[\u4e00-\u9fa5]{0,}$`:匹配任何数量(包括0个)的汉字。
2. **英文字母和数字**:
- `^[A-Za-z0-9]+$`:匹配任意长度的英文字母和数字组合。
- `^[A-Za-z0-9]{4,40}$`:匹配长度在4到40之间的英文字母和数字组合。
3. **长度为3到20的任意字符**:
- `^.{3,20}$`:匹配长度在3到20之间的任意字符。
4. **26个大写字母**:
- `^[A-Za-z]+$`:匹配任意长度的大写英文字母。
- `^[A-Z]+$`:匹配任意长度的大写英文字母。
- `^[a-z]+$`:匹配任意长度的小写英文字母。
5. **英文字母和数字**:
- `^[A-Za-z0-9]+$`:匹配任意长度的英文字母和数字组合。
- `^\w+$`:匹配任意长度的字母、数字和下划线组合。
6. **包含中文、英文和数字的用户名**:
- `^[\u4E00-\u9FA5A-Za-z0-9_]+$`:匹配包含中文、英文、数字和下划线的用户名。
- `^[\u4E00-\u9FA5A-Za-z0-9]+$`:匹配包含中文、英文和数字的用户名。
- `^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$`:匹配长度在2到20之间的包含中文、英文和数字的用户名。
7. **特殊字符排除**:
- `[^%&',;=?$\x22]+`:排除某些特殊字符。
#### 邮箱、网址和电话号码
1. **Email地址**:
- `^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$`:匹配标准的电子邮件地址格式。
2. **域名**:
- `[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?`:匹配标准的域名格式。
3. **Internet URL**:
- `^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$`:匹配标准的HTTP URL格式。
4. **手机号码**:
- `^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$`:匹配中国手机号码。
5. **座机号码**:
- `^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$`:匹配带区号的座机号码格式。
6. **地区电话号码**:
- `\d{3}-\d{8}|\d{4}-\d{7}`:匹配带有区号的地区电话号码格式。
7. **身份证号码**:
- `^\d{15}|\d{18}$`:匹配15位或18位的身份证号码。
- `^([0-9]){7,18}(x|X)?$`:匹配7到18位的身份证号码,最后一位可能是数字或字母X。
- `^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$`:匹配8到18位的身份证号码,最后一位可能是数字或字母X。
8. **用户名密码格式**:
- `^[a-zA-Z][a-zA-Z0-9_]{4,15}$`:匹配以字母开头的用户名,长度为5到16之间。
- `^[a-zA-Z]\w{5,17}$`:匹配以字母开头的用户名,长度为6到18之间。
- `^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$`:匹配包含至少一个大写字母、一个小写字母和一个数字的密码,长度为8到10之间。
9. **日期格式**:
- `^\d{4}-\d{1,2}-\d{1,2}`:匹配年月日格式的日期。
10. **月份格式**:
- `^(0?[1-9]|1[0-2])$`:匹配1到12月份的格式。
11. **天数格式**:
- `((0?[1-9])|((1|2)[0-9])|30|31)`:匹配1到31天的格式。
12. **金额格式**:
- `^[1-9][0-9]*$`:匹配正整数金额。
- `^(0|[1-9][0-9`:匹配以0开头或非零整数的金额格式。
通过上述正则表达式的详细介绍,读者可以更好地理解和应用这些规则来处理实际工作中的各种文本数据问题。