正则表达式(Regular Expression,简称Regex)是用于匹配字符串中字符组合的模式。它是编程中一种非常强大的工具,用于执行各种字符串操作,如搜索、替换、校验和解析。
目录
- 正则表达式在数字校验中的应用
- 基础数字校验
- 1. 任意数字
- 2. n位数字
- 3. 至少n位数字
- 4. m-n位数字
- 复杂数字校验
- 5. 零和非零开头的数字
- 6. 非零开头的最多带两位小数的数字
- 7. 带1-2位小数的正数或负数
- 8. 正数、负数和小数
- 9. 有两位小数的正实数
- 10. 有1~3位小数的正实数
- 整数校验
- 11. 非零的正整数
- 12. 非零的负整数
- 13. 非负整数
- 14. 非正整数
- 浮点数校验
- 15. 非负浮点数
- 16. 非正浮点数
- 17. 正浮点数
- 18. 负浮点数
- 19. 浮点数
- 正则表达式在字符校验中的应用
- 基础字符校验
- 1. 汉字校验
- 2. 英文和数字校验
- 3. 长度为3-20的所有字符
- 特定字符集校验
- 4. 由26个英文字母组成的字符串
- 5. 由26个大写英文字母组成的字符串
- 6. 由26个小写英文字母组成的字符串
- 7. 由数字和26个英文字母组成的字符串
- 8. 由数字、26个英文字母或者下划线组成的字符串
- 语言和符号校验
- 9. 中文、英文、数字包括下划线
- 10. 中文、英文、数字但不包括下划线等符号
- 特殊字符校验
- 11. 可以输入含有特定字符
- 12. 禁止输入含有特定字符
- 正则表达式在特殊需求中的应用
- 特殊校验
- 1. Email地址
- 2. 域名
- 3. Internet URL
- 4. 手机号码
- 5. 电话号码
- 6. 身份证号
- 7. 帐号
- 8. 密码
- 9. 日期格式
- 10. 钱的输入格式
- 11. XML文件
- 12. 中文字符
- 13. 双字节字符
- 14. 空白行
- 15. HTML标记
- 16. 腾讯QQ号
- 17. 中国邮政编码
- 18. IPv4地址
- 结论
正则表达式在数字校验中的应用
基础数字校验
1. 任意数字
要匹配任意数字(包括0),可以使用以下表达式:
^[0-9]*$
2. n位数字
若要匹配恰好n位的数字,表达式如下:
^\d{n}$
3. 至少n位数字
对于至少有n位的数字,表达式为:
^\d{n,}$
4. m-n位数字
匹配位数在m到n之间的数字,使用:
^\d{m,n}$
复杂数字校验
5. 零和非零开头的数字
对于以零或非零开头的数字,正则表达式如下:
^(0|[1-9][0-9]*)$
6. 非零开头的最多带两位小数的数字
匹配非零开头且最多带两位小数的数字:
^([1-9][0-9]*)+(\.[0-9]{1,2})?$
7. 带1-2位小数的正数或负数
包括正数、负数和最多两位小数的数字:
^(-)?\d+(\.\d{1,2})?$
8. 正数、负数和小数
匹配任意正数、负数或小数:
^(-|\+)?\d+(\.\d+)?$
9. 有两位小数的正实数
匹配至少有一位整数且有两位小数的正实数:
^[0-9]+(\.[0-9]{2})?$
10. 有1~3位小数的正实数
匹配至少有一位整数且有1到3位小数的正实数:
^[0-9]+(\.[0-9]{1,3})?$
整数校验
11. 非零的正整数
匹配非零开头的正整数:
^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
12. 非零的负整数
匹配非零开头的负整数:
^-[1-9]\d*$
13. 非负整数
匹配所有非负整数(包括0):
^\d+$ 或 ^[1-9]\d*|0$
14. 非正整数
匹配所有非正整数(包括0):
^-[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}$
3. 长度为3-20的所有字符
匹配长度在3到20之间的任意字符:
^.{3,20}$
特定字符集校验
4. 由26个英文字母组成的字符串
要匹配只包含英文字母的字符串:
^[A-Za-z]+$
5. 由26个大写英文字母组成的字符串
匹配只包含大写英文字母的字符串:
^[A-Z]+$
6. 由26个小写英文字母组成的字符串
匹配只包含小写英文字母的字符串:
^[a-z]+$
7. 由数字和26个英文字母组成的字符串
匹配包含数字和英文字母的字符串:
^[A-Za-z0-9]+$
8. 由数字、26个英文字母或者下划线组成的字符串
匹配包含数字、英文字母和下划线的字符串:
^\w+$ 或 ^\w{3,20}$
语言和符号校验
9. 中文、英文、数字包括下划线
对于包含中文、英文、数字和下划线的字符串:
^[\u4E00-\u9FA5A-Za-z0-9_]+$
10. 中文、英文、数字但不包括下划线等符号
匹配包含中文、英文和数字但不包含下划线的字符串:
^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
特殊字符校验
11. 可以输入含有特定字符
允许输入包含特定字符的字符串:
[^%&',;=?$\x22]+
12. 禁止输入含有特定字符
禁止输入包含特定字符,如波浪号(~)的字符串:
[^~]+
正则表达式在特殊需求中的应用
特殊校验
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
匹配互联网URL:
[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
4. 手机号码
校验符合中国大陆手机号的格式:
^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$
5. 电话号码
校验多种格式的电话号码:
^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
6. 身份证号
校验15位或18位的身份证号码:
(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)
7. 帐号
校验帐号是否合法:
^[a-zA-Z][a-zA-Z0-9_]{4,15}$
8. 密码
校验密码的强度:
^[a-zA-Z]\w{5,17}$ 或 (?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$
9. 日期格式
校验日期格式:
^\d{4}-\d{1,2}-\d{1,2}$
10. 钱的输入格式
校验金额输入是否符合要求:
^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$
11. XML文件
校验XML文件名是否正确:
^([a-zA-Z]+-?)+[a-zA-Z0-9]+\.[x|X][m|M][l|L]$
12. 中文字符
匹配中文字符:
[\u4e00-\u9fa5]
13. 双字节字符
匹配双字节字符,包括汉字:
[^\x00-\xff]
14. 空白行
删除空白行:
\n\s*\r
15. HTML标记
匹配HTML标记:
<(\S*?)[^>]*>.*?|<.*? />
16. 腾讯QQ号
校验腾讯QQ号:
[1-9][0-9]{4,}
17. 中国邮政编码
校验中国邮政编码:
[1-9]\d{5}(?!\d)
18. IPv4地址
校验IPv4地址:
((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}
结论
正则表达式是一种强大但复杂的工具,掌握它可以极大地提高处理字符串的效率。然而,正则表达式的复杂性也可能导致难以理解和维护的代码。因此,合理使用正则表达式,并结合代码注释,可以更好地发挥其优势。