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