常用正则表达式
一、校验数字的表达式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 数字:^[ 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 }$ 或 ^\ + ?[ 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 * | 0 \.\d * [ 1 - 9 ]\d * | 0 ?\. 0 + | 0 $ 非正浮点数:^(( - \d + (\.\d + )?)|( 0 + (\. 0 + )?))$ 或 ^( - ([ 1 - 9 ]\d * \.\d * | 0 \.\d * [ 1 - 9 ]\d * ))| 0 ?\. 0 + | 0 $ 正浮点数:^[ 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 ] * ))$ 负浮点数:^ - ([ 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 ] * )))$ 浮点数:^( - ?\d + )(\.\d + )?$ 或 ^ - ?([ 1 - 9 ]\d * \.\d * | 0 \.\d * [ 1 - 9 ]\d * | 0 ?\. 0 + | 0 )$ |
二、校验字符的表达式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 汉字:^[\u4e00 - \u9fa5]{ 0 ,}$ 英文和数字:^[A - Za - z0 - 9 ] + $ 或 ^[A - Za - z0 - 9 ]{ 4 , 40 }$ 长度为 3 - 20 的所有字符:^.{ 3 , 20 }$ 由 26 个英文字母组成的字符串:^[A - Za - z] + $ 由 26 个大写英文字母组成的字符串:^[A - Z] + $ 由 26 个小写英文字母组成的字符串:^[a - z] + $ 由数字和 26 个英文字母组成的字符串:^[A - Za - z0 - 9 ] + $ 由数字、 26 个英文字母或者下划线组成的字符串:^\w + $ 或 ^\w{ 3 , 20 } 中文、英文、数字包括下划线:^[\u4E00 - \u9FA5A - Za - z0 - 9_ ] + $ 中文、英文、数字但不包括下划线等符号:^[\u4E00 - \u9FA5A - Za - z0 - 9 ] + $ 或 ^[\u4E00 - \u9FA5A - Za - z0 - 9 ]{ 2 , 20 }$ 可以输入含有^ % & ',;=?$\"等字符:[^%&' ,; = ?$\x22] + 禁止输入含有~的字符[^~\x22] + . * 匹配除 \n 以外的任何字符。 / [\u4E00 - \u9FA5] / 汉字 / [\uFF00 - \uFFFF] / 全角符号 / [\u0000 - \u00FF] / 半角符号 |
三、特殊需求表达式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | Email地址:^\w + ([ - + .]\w + ) * @\w + ([ - .]\w + ) * \.\w + ([ - .]\w + ) * $ 域名:[a - zA - Z0 - 9 ][ - a - zA - Z0 - 9 ]{ 0 , 62 }( / .[a - zA - Z0 - 9 ][ - a - zA - Z0 - 9 ]{ 0 , 62 }) + / .? InternetURL:[a - zA - z] + : / / [^\s] * 或 ^http: / / ([\w - ] + \.) + [\w - ] + ( / [\w - . / ? % & = ] * )?$ 手机号码:^( 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 }$ 电话号码( "XXX-XXXXXXX" 、 "XXXX-XXXXXXXX" 、 "XXX-XXXXXXX" 、 "XXX-XXXXXXXX" 、 "XXXXXXX" 和"XXXXXXXX):^(\(\d{ 3 , 4 } - )|\d{ 3.4 } - )?\d{ 7 , 8 }$ 国内电话号码( 0511 - 4405222 、 021 - 87888822 ):\d{ 3 } - \d{ 8 }|\d{ 4 } - \d{ 7 } 身份证号( 15 位、 18 位数字):^\d{ 15 }|\d{ 18 }$ 短身份证号码(数字、字母x结尾):^([ 0 - 9 ]){ 7 , 18 }(x|X)?$ 或 ^\d{ 8 , 18 }|[ 0 - 9x ]{ 8 , 18 }|[ 0 - 9X ]{ 8 , 18 }?$ 帐号是否合法(字母开头,允许 5 - 16 字节,允许字母数字下划线):^[a - zA - Z][a - zA - Z0 - 9_ ]{ 4 , 15 }$ 密码(以字母开头,长度在 6 ~ 18 之间,只能包含字母、数字和下划线):^[a - zA - Z]\w{ 5 , 17 }$ 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8 - 10 之间):^(? = . * \d)(? = . * [a - z])(? = . * [A - Z]).{ 8 , 10 }$ 日期格式:^\d{ 4 } - \d{ 1 , 2 } - \d{ 1 , 2 } 一年的 12 个月( 01 ~ 09 和 1 ~ 12 ):^( 0 ?[ 1 - 9 ]| 1 [ 0 - 2 ])$ 一个月的 31 天( 01 ~ 09 和 1 ~ 31 ):^(( 0 ?[ 1 - 9 ])|(( 1 | 2 )[ 0 - 9 ])| 30 | 31 )$ 钱的输入格式 有四种钱的表示形式我们可以接受: "10000.00" 和 "10,000.00" , 和没有 "分" 的 "10000" 和 "10,000" :^[ 1 - 9 ][ 0 - 9 ] * $ 这表示任意一个不以 0 开头的数字,但是,这也意味着一个字符 "0" 不通过,所以我们采用下面的形式:^( 0 |[ 1 - 9 ][ 0 - 9 ] * )$ 一个 0 或者一个不以 0 开头的数字.我们还可以允许开头有一个负号:^( 0 | - ?[ 1 - 9 ][ 0 - 9 ] * )$ 4. 这表示一个 0 或者一个可能为负的开头不为 0 的数字.让用户以 0 开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分:^[ 0 - 9 ] + (.[ 0 - 9 ] + )?$ 必须说明的是,小数点后面至少应该有 1 位数,所以 "10." 是不通过的,但是 "10" 和 "10.2" 是通过的:^[ 0 - 9 ] + (.[ 0 - 9 ]{ 2 })?$ 这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:^[ 0 - 9 ] + (.[ 0 - 9 ]{ 1 , 2 })?$ 这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:^[ 0 - 9 ]{ 1 , 3 }(,[ 0 - 9 ]{ 3 }) * (.[ 0 - 9 ]{ 1 , 2 })?$ 1 到 3 个数字,后面跟着任意个 逗号 + 3 个数字,逗号成为可选,而不是必须:^([ 0 - 9 ] + |[ 0 - 9 ]{ 1 , 3 }(,[ 0 - 9 ]{ 3 }) * )(.[ 0 - 9 ]{ 1 , 2 })?$ 备注:这就是最终结果了,别忘了 + 可以用 * 替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里 xml文件:^([a - zA - Z] + - ?) + [a - zA - Z0 - 9 ] + \\.[x|X][m|M][l|L]$ 中文字符的正则表达式:[\u4e00 - \u9fa5] 双字节字符:[^\x00 - \xff](包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计 2 ,ASCII字符计 1 )) 空白行的正则表达式:\n\s * \r (可以用来删除空白行) HTML标记的正则表达式:<(\S * ?)[^>] * >. * ?< / \ 1 >|<. * ? / > (网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力) 首尾空白字符的正则表达式:^\s * |\s * $或(^\s * )|(\s * $) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式) 腾讯QQ号:[ 1 - 9 ][ 0 - 9 ]{ 4 ,}(腾讯QQ号从 10000 开始) 中国邮政编码:[ 1 - 9 ]\d{ 5 }(?!\d)(中国邮政编码为 6 位数字) IP地址:\d + \.\d + \.\d + \.\d + (提取IP地址时有用) IP地址:((?:(?: 25 [ 0 - 5 ]| 2 [ 0 - 4 ]\\d|[ 01 ]?\\d?\\d)\\.){ 3 }(?: 25 [ 0 - 5 ]| 2 [ 0 - 4 ]\\d|[ 01 ]?\\d?\\d)) IP - v4地址:\\b(?:(?: 25 [ 0 - 5 ]| 2 [ 0 - 4 ][ 0 - 9 ]|[ 01 ]?[ 0 - 9 ][ 0 - 9 ]?)\\.){ 3 }(?: 25 [ 0 - 5 ]| 2 [ 0 - 4 ][ 0 - 9 ]|[ 01 ]?[ 0 - 9 ][ 0 - 9 ]?)\\b (提取IP地址时有用) 校验IP - v6地址:(([ 0 - 9a - fA - F]{ 1 , 4 }:){ 7 , 7 }[ 0 - 9a - fA - F]{ 1 , 4 }|([ 0 - 9a - fA - F]{ 1 , 4 }:){ 1 , 7 }:|([ 0 - 9a - fA - F]{ 1 , 4 }:){ 1 , 6 }:[ 0 - 9a - fA - F]{ 1 , 4 }|([ 0 - 9a - fA - F]{ 1 , 4 }:){ 1 , 5 }(:[ 0 - 9a - fA - F]{ 1 , 4 }){ 1 , 2 }|([ 0 - 9a - fA - F]{ 1 , 4 }:){ 1 , 4 }(:[ 0 - 9a - fA - F]{ 1 , 4 }){ 1 , 3 }|([ 0 - 9a - fA - F]{ 1 , 4 }:){ 1 , 3 }(:[ 0 - 9a - fA - F]{ 1 , 4 }){ 1 , 4 }|([ 0 - 9a - fA - F]{ 1 , 4 }:){ 1 , 2 }(:[ 0 - 9a - fA - F]{ 1 , 4 }){ 1 , 5 }|[ 0 - 9a - fA - F]{ 1 , 4 }:((:[ 0 - 9a - fA - F]{ 1 , 4 }){ 1 , 6 })|:((:[ 0 - 9a - fA - F]{ 1 , 4 }){ 1 , 7 }|:)|fe80:(:[ 0 - 9a - fA - F]{ 0 , 4 }){ 0 , 4 } % [ 0 - 9a - zA - Z]{ 1 ,}|::(ffff(: 0 { 1 , 4 }){ 0 , 1 }:){ 0 , 1 }(( 25 [ 0 - 5 ]|( 2 [ 0 - 4 ]| 1 { 0 , 1 }[ 0 - 9 ]){ 0 , 1 }[ 0 - 9 ])\\.){ 3 , 3 }( 25 [ 0 - 5 ]|( 2 [ 0 - 4 ]| 1 { 0 , 1 }[ 0 - 9 ]){ 0 , 1 }[ 0 - 9 ])|([ 0 - 9a - fA - F]{ 1 , 4 }:){ 1 , 4 }:(( 25 [ 0 - 5 ]|( 2 [ 0 - 4 ]| 1 { 0 , 1 }[ 0 - 9 ]){ 0 , 1 }[ 0 - 9 ])\\.){ 3 , 3 }( 25 [ 0 - 5 ]|( 2 [ 0 - 4 ]| 1 { 0 , 1 }[ 0 - 9 ]){ 0 , 1 }[ 0 - 9 ])) 子网掩码:((?:(?: 25 [ 0 - 5 ]| 2 [ 0 - 4 ]\\d|[ 01 ]?\\d?\\d)\\.){ 3 }(?: 25 [ 0 - 5 ]| 2 [ 0 - 4 ]\\d|[ 01 ]?\\d?\\d)) 校验日期:^(?:(?! 0000 )[ 0 - 9 ]{ 4 } - (?:(?: 0 [ 1 - 9 ]| 1 [ 0 - 2 ]) - (?: 0 [ 1 - 9 ]| 1 [ 0 - 9 ]| 2 [ 0 - 8 ])|(?: 0 [ 13 - 9 ]| 1 [ 0 - 2 ]) - (?: 29 | 30 )|(?: 0 [ 13578 ]| 1 [ 02 ]) - 31 )|(?:[ 0 - 9 ]{ 2 }(?: 0 [ 48 ]|[ 2468 ][ 048 ]|[ 13579 ][ 26 ])|(?: 0 [ 48 ]|[ 2468 ][ 048 ]|[ 13579 ][ 26 ]) 00 ) - 02 - 29 )$(“yyyy - mm - dd“ 格式的日期校验,已考虑平闰年。) 抽取注释:<! - - (. * ?) - - > 查找CSS属性:^\\s * [a - zA - Z\\ - ] + \\s * [:]{ 1 }\\s[a - zA - Z0 - 9 \\s. #]+[;]{1} 提取页面超链接:(<a\\s * (?!. * \\brel = )[^>] * )(href = "https?:\\/\\/)((?!(?:(?:www\\.)?'.implode('|(?:www\\.)?', $follow_list).'))[^" rel = "external nofollow" ] + )"((?!. * \\brel = )[^>] * )(?:[^>] * )> 提取网页图片:\\< * [img][^\\\\>] * [src] * = * [\\ "\\']{0,1}([^\\" \\'\\ >] * ) 提取网页颜色代码:^ #([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$ 文件扩展名效验:^([a - zA - Z]\\:|\\\\)\\\\([^\\\\] + \\\\) * [^\\ / : * ?"<>|] + \\.txt(l)?$ 判断IE版本:^. * MSIE [ 5 - 8 ](?:\\.[ 0 - 9 ] + )?(?!. * Trident\\ / [ 5 - 9 ]\\. 0 ). * $ |
"一劳永逸" 的话,有是有的,而 "一劳永逸" 的事却极少
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2016-05-30 python常用内置函数