100个正则表达式的入门实例和40个组合类型正则表达式实例
正则表达式详解
数字:^[0-9]*$
n位的数字: ^\d{n}$
至少n位的数字: ^\d{n,}$
m-n位的数字: ^\d{m,n}$
零和非零开头的数字:^(0 [1-9][0-9]*)$
非零开头的最多带两位小数的数字: ^([1-9][0-9]*)+(\[0-9][1,2})?$
带1-2位小数的正数或负数: ^(\-)?\d+( \. \d{1,2})$
正数、负数、和小数:^(\- \+)?\d+(\.\d+)?$
有两位小数的正实数: ^[0-9]+(\.[0-9]{2})?$
有1~3位小数的正实数: ^[0-9]+(\.[0-9]{1,3})?$
非零的正整数: ^[1-9]\d*$ 或 ([1-9][0-9]*){1,3}$或 A\+?[1-9][0-9]*$
非零的负整数:^\-[1-9][]0-9"*$ 或 -[1-9]\d*$
非负整数: ^\d+$ 或 [1-9]\d*|0$
非正整数: ^-[1-9]\d*|0$ 或 ^((-\d+)(0+))$
非负浮点数: ^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*10.\d*[1-9]\d*10?\.0+10$
非正浮点数: ^((-\d+( .ld+)?)1(0+(\.0+)?))$ 或(-([1-9]\d*\.\d*l0\.\d*[1-9]\d*))10?\.0+10$
正浮点数: ^[1-9]\d*\.\d*lo\.\d*[1-9]\d*$ 或(([0-9]+\.[0-9]*[1-9][0-9]*)I([O-9]*[1-9][0-91*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
负浮点数: ^-([1-9]\d*\.\d*l0 .\d*[1-9]\d*)$ 或 (-(([0-9]+\.[0-9]*[1-9][0-9]*)1([0-9]*[1-9][0.9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数: ^(-?\d+)(\.\d+)?$ 或 -?([1-9]\d*\.\d*0\.\d*[1-9]\d*0?\.0+10)$
100个正则表达式的入门实例
- 匹配任何单个字符:.
- 匹配特定的字符:例如匹配字母a:a
- 匹配一组字符中的任何一个:例如匹配元音字母:[aeiou]
- 匹配除了一组字符以外的任何字符:例如匹配非元音字母:[^aeiou]
- 匹配重复的字符,如aaa或bbb:(a|b)\1+
- 匹配任意数字:\d
- 匹配任何非数字字符:\D
- 匹配任何空格字符:\s
- 匹配任何非空格字符:\S
- 匹配任何字母、数字和下划线字符:\w
- 匹配任何非字母、数字和下划线字符:\W
- 匹配前面的字符零次或多次:*
- 匹配前面的字符一次或多次:+
- 匹配前面的字符零次或一次:?
- 匹配字符串的开头:^
- 匹配字符串的结尾:$
- 匹配单词边界:\b
- 匹配非单词边界:\B
- 捕获分组中的文本并将其存储到变量中:(pattern)
- 不捕获分组中的文本:(?:pattern)
- 匹配前面的字符n次:{n}
- 匹配前面的字符至少n次:{n,}
- 匹配前面的字符至少n次但不超过m次:{n,m}
- 匹配任何一个换行符:\n
- 匹配任何一个回车符:\r
- 匹配任何一个制表符:\t
- 匹配一个或多个空格字符:\s+
- 匹配一个或多个非空格字符:\S+
- 匹配一个或多个字母:[a-zA-Z]+
- 匹配一个或多个数字:\d+
- 匹配一个或多个数字和一个可选的小数部分:\d+(.\d+)?
- 匹配一个IP地址:\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}
- 匹配一个URL:(http|https)://[\w-.]+(:\d+)?(/[\w/_.]*)?
- 匹配一个电子邮件地址:[\w.-]+@[\w.-]+.[a-zA-Z]+
- 匹配一个美国邮政编码:\d{5}(-\d{4})?
- 匹配一个日期(MM/DD/YYYY格式):(0[1-9]|1[0-2])/([0-2][1-9]|3[0-1])/\d{4}
- 匹配一个时间(HH:MM:SS格式):([01]\d|2[0-3]):[0-5]\d:[0-5]\d
- 匹配一个US电话号码:\d{3}-\d{3}-\d{4}
- 匹配一个HTML标签:<[^>]*>
- 匹配一个XML标签:<.*?>
- 匹配一个HTML注释:<!--.*?-->
- 匹配一个XML注释:<!--.*?-->
- 匹配一个CSS选择器:.[\w-]+
- 匹配一个CSS颜色值:#[a-fA-F0-9]{6}
- 匹配一个JSON键值对:"[\w\s]+" *: *("[^"]+"|\d+|true|false|null)
- 匹配一个Markdown标题:^#{1,6}\s+.+
- 匹配一个Markdown无序列表项:^*\s+.+
- 匹配一个Markdown有序列表项:^\d+.\s+.+
- 匹配一个Markdown链接:[[^]]+]([^)]+)
50. 匹配一个Markdown加粗文本:**.+**
51. 匹配一个Markdown斜体文本:*.+*
52. 匹配一个Markdown代码块:[\s\S]+?
53. 匹配一个Markdown引用文本:>\s+.+
54. 匹配一个Markdown图片:![[^]]+]([^)]+)
55. 匹配一个Markdown删除线:.+
56. 匹配一个CSV文件行:("[^"]+"|[^,]+)(,[^,]+)*
57. 匹配多个HTML标签:<(div|p|a|span)\b.?>[\s\S]?</\1>
58. 匹配一个Java注释://.|/*[\s\S]?*/
59. 匹配一个Python注释:#.*
60. 匹配一个JavaScript注释://.|/*[\s\S]?*/
61. 匹配一个SQL注释:--.|/[\s\S]?*/
62. 匹配一个C语言注释://.|/*[\s\S]?*/
63. 匹配一个C++注释://.|/*[\s\S]?*/
64. 匹配一个PHP注释://.|/*[\s\S]?*/
65. 匹配一个Ruby注释:#.
66. 匹配一个Swift注释://.|/*[\s\S]?*/
67. 匹配一个Perl注释:#.*
68. 匹配一个Shell注释:#.*
69. 匹配一个XML属性:\b\w+="[^"]"
70. 匹配一个XML标签内的文本:<[^>]>([^<])</[^>]>
71. 匹配一个XML CDATA块:<![CDATA[.?]]>
72. 匹配一个XML注释:<!--.?-->
73. 匹配一个CSS样式规则:[\w-]+ : [^;]+;
74. 匹配一个CSS媒体查询:@media\s+[^{]+{[\s\S]+?}
75. 匹配一个CSS关键帧动画:@keyframes\s+[\w-]+\s{[\s\S]+?}
76. 匹配一个CSS选择器列表:([\w-.#]+\s,\s*)[\w-.#]+
77. 匹配一个CSS单位值:\d+(px|em|%)
78. 匹配一个CSS URL值:url(['"]?[^)'"]+['"]?)
79. 匹配一个CSS颜色值:#[a-fA-F0-9]{3,6}
80. 匹配一个CSS字体名称:font-family:[^;]+;
81. 匹配一个CSS盒模型样式:box-(sizing|shadow|border|padding|margin):\S+;
82. 匹配一个CSS Flexbox布局样式:display:\s(-webkit-)?flex\S*;
83. 匹配一个CSS Grid布局样式:display:\s*-ms-grid\S*;
84. 匹配一个CSS过渡效果样式:transition:\S+;
85. 匹配一个CSS动画效果样式:animation:\S+;
86. 匹配一个CSS变量定义:--\w+:\S+;
87. 匹配一个CSS媒体查询的宽度值:(?<=width:)\d+(px|em|%)
88. 匹配一个CSS媒体查询的高度值:(?<=height:)\d+(px|em|%)
89. 匹配一个CSS媒体查询的最大宽度值:(?<=max-width:)\d+(px|em|%)
90. 匹配一个CSS媒体查询的最小宽度值:(?<=min-width:)\d+(px|em|%)
91. 匹配一个CSS媒体查询的最大高度值:(?<=max-height:)\d+(px|em|%)
92. 匹配一个CSS媒体查询的最小高度值:(?<=min-height:)\d+(px|em|%)
93. 匹配一个CSS媒体查询的屏幕方向:(?<=orientation:)[\w-]+
94. 匹配一个CSS媒体查询的设备类型:(?<=device-type:)[\w-]+
95. 匹配一个CSS媒体查询的分辨率:(?<=resolution:)\d+(dpi|dpcm|dppx)
96. 匹配一个CSS媒体查询的颜色模式:(?<=color-index:)[\d-]+
97. 匹配一个CSS媒体查询的光照条件:(?<=light-level:)[\w-]+
98. 匹配一个CSS媒体查询的触摸设备支持:(?<=pointer:)[\w-]+
99. 匹配一个CSS媒体查询的音频输出支持:(?<=output:)[\w-]+
100. 匹配一个CSS媒体查询的交互方式:(?<=interaction:)[\w-]+
40个组合类型正则表达式实例
- 匹配一个IP地址:^(?:(?:2[0-4]\d|25[0-5]|1\d{2}|[1-9]\d|\d).){3}(?:2[0-4]\d|25[0-5]|1\d{2}|[1-9]\d|\d)$
- 匹配一个URL链接:^(?:https?://)?(?:www.)?[-a-zA-Z0-9@:%.+~#=]{2,256}.[a-z]{2,6}\b(?:[-a-zA-Z0-9@:%+.~#?&//=]*)$
- 匹配HTML标签:<([a-z]+)([^<]+)(?:>(.)</\1>|\s+/>)$
- 匹配电话号码:^+?[0-9]{1,3}?[-.\s]?(([0-9]{1,3})|[0-9]{1,3})?[-.\s]?[0-9]{1,3}[-.\s]?[0-9]{1,4}[-.\s]?[0-9]{1,4}$
- 匹配电子邮件地址:^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$
- 匹配美国社会安全号码(SSN):^(?!219-09-9999|078-05-1120)(?!666|000|9\d{2})\d{3}-(?!00)\d{2}-(?!0{4})\d{4}$
- 匹配日期:^([1-9]|[12][0-9]|3[01])- /.- /.\d\d$
- 匹配时间:^([0-1]?[0-9]|2[0-3]):([0-5][0-9])(:[0-5][0-9])?$
- 匹配银行卡号:^[0-9]{13,19}$
- 匹配邮政编码:^\d{5}-\d{4}|\d{5}$
- 匹配双字节字符串(包括中文字符):^[\u4e00-\u9fa5]+$
- 匹配DNS主机名:^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)(.[a-zA-Z0-9]+(-[a-zA-Z0-9]+))+$
- 匹配十六进制颜色代码:^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
- 匹配XML标记:<([a-z]+)([^<]+)(?:>(.)</\1>|\s+/>)$
- 匹配MD5哈希值:^[0-9a-fA-F]{32}$
- 匹配SHA1哈希值:^[0-9a-f]{40}$
- 匹配SHA256哈希值:^[0-9a-f]{64}$
- 匹配ISO 8601日期时间格式:^([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])Tt:([0-5]\d):([0-5]\d)(.\d+)?([Zz]|(+-:([0-5]\d)))?)$
- 匹配UUID:^[a-fA-F0-9]{8}-?[a-fA-F0-9]{4}-?[a-fA-F0-9]{4}-?[a-fA-F0-9]{4}-?[a-fA-F0-9]{12}$
- 匹配ISBN(International Standard Book Number):^(?=.{17}|.{13}∣.13)[0-9]{1,5}([- ]?[0-9]+){2,4}[- ]?[0-9X]$
- 匹配MAC地址:^([0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa
- 匹配HTML颜色代码:^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
- 匹配IPv6地址:^(?!:*::)(([a-fA-F0-9]{1,4}:){7}[a-fA-F0-9]{1,4}|([a-fA-F0-9]{1,4}:){1,6}:|[a-fA-F0-9]{1,4}::([a-fA-F0-9]{1,4}:){1,5}|([a-fA-F0-9]{1,4}:){2}::([a-fA-F0-9]{1,4}:){1,4}|([a-fA-F0-9]{1,4}:){3}::([a-fA-F0-9]{1,4}:){1,3}|([a-fA-F0-9]{1,4}:){4}::([a-fA-F0-9]{1,4}:){1,2}|([a-fA-F0-9]{1,4}:){5}::[a-fA-F0-9]{1,4}:|([a-fA-F0-9]{1,4}:){6}::))(([a−fA−F0−9]1,4:)7[a−fA−F0−9]1,4∣([a−fA−F0−9]1,4:)1,6:∣[a−fA−F0−9]1,4::([a−fA−F0−9]1,4:)1,5∣([a−fA−F0−9]1,4:)2::([a−fA−F0−9]1,4:)1,4∣([a−fA−F0−9]1,4:)3::([a−fA−F0−9]1,4:)1,3∣([a−fA−F0−9]1,4:)4::([a−fA−F0−9]1,4:)1,2∣([a−fA−F0−9]1,4:)5::[a−fA−F0−9]1,4:∣([a−fA−F0−9]1,4:)6::)
- 匹配HTML注释:<!--(.*?)-->
- 匹配邮件地址中的用户名部分(@符号前面的部分):^[^@\s]+$
- 匹配邮件地址中的域名部分(@符号后面的部分):@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$
- 匹配XML属性:(\w+)=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']?
- 匹配QQ号码:^[1-9]\d{4,}$
- 匹配微信号:^[a-zA-Z][-_a-zA-Z0-9]{5,19}$
- 匹配中国大陆身份证号码:^\d{17}[\d|x]|\d{15}$
- 匹配中国香港身份证号码:^[a-zA-Z]\d{6}([0-9aA])$
- 匹配中国澳门身份证号码:^[1|5|7][0-9]{6}([0-9Aa])$
- 匹配中国台湾身份证号码:^[a-zA-Z][0-9]{9}$
- 匹配16进制数字:^0[xX][0-9a-fA-F]+$
- 匹配HTML标签内的文本:<[^>]+>([^<]+)</[^>]+>
- 匹配英文字母:^[a-zA-Z]+$
- 匹配非负整数:^\d+$
- 匹配科学计数法:^[+-]?\d+(?:.\d+)?(?:[eE][+-]?\d+)?$
- 匹配CSS选择器:^[.#]?[a-zA-Z0-9_-]+$
- 匹配JSON字符串(单引号或双引号包裹的对象或数组):^(?:"(?:\.|[^"])"|'(?:\.|[^'])')$