### 常用的正则表达式知识点
正则表达式是一种强大的文本处理工具,在文本检索、替换等操作中有着广泛的应用。以下是对给定文件中的正则表达式进行的详细解析与说明。
#### 数字类正则表达式
1. **匹配任意长度的数字:** `^[0-9]*$`
- 这个表达式可以匹配任何以数字开头的字符串,包括空字符串(即没有数字的情况)。
2. **匹配固定长度n的数字:** `^\d{n}$`
- 这里`\d`是数字的简写,`{n}`表示重复n次,因此这个表达式用于匹配恰好有n位数字的字符串。
3. **匹配最少n位的数字:** `^\d{n,}$`
- 此表达式匹配至少有n位数字的字符串,例如`^\d{3,}`可以匹配所有至少有三位数字的字符串。
4. **匹配m到n位的数字:** `^\d{m,n}$`
- 这个表达式用于匹配m至n位数字之间的字符串,例如`^\d{3,5}`匹配所有三到五位数字的字符串。
5. **匹配非负整数:** `^(0|[1-9][0-9]*)$`
- 这个表达式可以匹配所有非负整数,包括零。
6. **匹配正浮点数或整数(小数部分最多两位):** `^([1-9][0-9]*)?(.[0-9]{1,2})?$`
- 可以匹配所有的正整数以及小数部分最多两位的小数,例如“123”、“123.45”。
7. **匹配带符号的浮点数(小数部分最多两位):** `^(\-)?\d+(\.\d{1,2})?$`
- 匹配可选的负号,然后是整数部分和可选的小数部分(最多两位)。
8. **匹配带符号的浮点数:** `^(\-|\+)?\d+(\.\d+)?$`
- 匹配带有可选正负号的整数或浮点数。
9. **匹配整数或小数(小数部分最多两位):** `^[0-9]+(.[0-9]{2})?$`
- 匹配所有整数或小数,其中小数部分最多两位。
10. **匹配整数或小数(小数部分最多三位):** `^[0-9]+(.[0-9]{1,3})?$`
- 类似于第9条,但小数部分可以是1到3位。
11. **匹配正整数:**
- `^[1-9]\d*$`:匹配所有正整数。
- `^([1-9][0-9]*){1,3}$`:匹配一到三个正整数的组合。
- `^\+?[1-9][0-9]*$`:匹配所有正整数,包括带正号的情况。
12. **匹配负整数:** `^\-[1-9][0-9]*$`
- 匹配所有负整数。
13. **匹配非负整数:** `^\d+$` 和 `^[1-9]\d*|0$`
- 第一个表达式匹配所有非负整数;第二个表达式也匹配非负整数,但更精确地处理了“0”的情况。
14. **匹配带符号的整数:** `^-[1-9]\d*|0$` 和 `^((-\d+)|(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,}$`
- 此表达式匹配所有由汉字组成的字符串,包括空字符串。
2. **匹配由英文字母和数字组成的字符串:**
- `^[A-Za-z0-9]+$`:匹配由英文字母和数字组成的字符串。
- `^[A-Za-z0-9]{4,40}$`:匹配长度在4到40之间的由英文字母和数字组成的字符串。
3. **匹配长度为3到20的任意字符:** `^.{3,20}$`
- 匹配任意长度在3到20之间的字符串。
4. **匹配由26个大写字母组成的字符串:** `^[A-Z]+$`
5. **匹配由26个小写字母组成的字符串:** `^[a-z]+$`
6. **匹配由26个英文字母组成的字符串:** `^[A-Za-z]+$`
7. **匹配由26个英文字母和数字组成的字符串:** `^[A-Za-z0-9]+$`
8. **匹配由26个英文字母和下划线组成的字符串:** `^\w+$` 和 `^\w{3,20}$`
- 第一个表达式匹配任意长度的由英文字母、数字和下划线组成的字符串;第二个表达式匹配长度在3到20之间的由这些字符组成的字符串。
9. **匹配包含英文、数字和下划线的字符串:** `^[\u4E00-\u9FA5A-Za-z0-9_]+$`
10. **匹配长度为2到20的包含英文、数字和下划线的字符串:** `^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$`
11. **排除特殊字符:** `[^%&',;=?$\x22]+`
- 匹配不包含特定特殊字符的字符串。
12. **排除波浪线和双引号:** `[^~\x22]+`
- 匹配不包含波浪线和双引号的字符串。
13. **匹配带小数点的数字:** `^[0-9]+\.{0,1}[0-9]{0,2}$`
- 匹配整数或小数,小数部分最多两位。
#### 其他常见应用场景
1. **电子邮件地址:** `^\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:** `[a-zA-z]+://[^\s]*` 和 `^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$`
- 第一个表达式匹配以字母开头的URL;第二个表达式更具体地匹配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位身份证号码。
- `^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$`:匹配15位身份证号码。
- `^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$`:匹配18位身份证号码。
8. **身份证号码(支持校验码):** `^([0-9]){7,18}(x|X)?$` 和 `^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?`
- 匹配包含校验码的身份证号码。
9. **用户名格式(字母开头,长度5-16,允许字母、数字和下划线):** `^[a-zA-Z][a-zA-Z0-9_]{4,15}$`
10. **用户名格式(字母开头,长度6-18,只允许字母和下划线):** `^[a-zA-Z]\w{5,17}$`
11. **强密码(必须包含大小写字母和数字,长度8-10):** `^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$`
12. **其他格式:** `^\`
- 未提供完整表达式,无法解析。
以上就是对给定文件中正则表达式的详细解析,希望能帮助理解和应用这些常见的正则表达式模式。