在线正则表达式测试:概念正则表达式是字符串运算的逻辑公式,它是使用预先定义的一些特定字符,并将这些特定字符的表达式组合起来形成一个“rulestring”,这个“rulestring”用来表达一个对字符串的过滤逻辑。给定一个正则表达式和另一个字符串,我们可以实现以下目标:1.给定的字符串是否满足正则表达式的过滤逻辑(称为“匹配”);2.通过正则表达式,从字符串中获取我们想要的特定部分。正则表达式的特点是:1.非常灵活,逻辑性和功能性强;2、可以非常简单的快速实现对字符串的复杂控制。正则表达式的基本语法中有两个特殊符号^和$。它们的作用是分别表示一个字符串的开始和结束。例子如下:^The:表示所有以“The”开头的字符串(“There”、“Thecat”等);ofdespair$:表示所有以“ofdespair”结尾的字符串;^abc$:表示以“abc”开头和结尾的字符串——呵呵,只有“abc”本身;notice:表示任何包含“notice”的字符串。与上一个示例一样,如果您不使用这两个特殊字符,则表示您要查找的字符串位于您要查找的字符串的任何部分——您没有将其定位在顶部。还有其他三个符号*、+和?,表示一个字符或字符序列的重复次数。它们分别表示“一个或多个”、“一次或多次”和“一个或一个”。下面是几个例子:ab*:表示一个字符串有一个a后跟零个或几个b。("a","ab","abbb",...);ab+:表示一个字符串有一个a后跟至少一个b或多个;ab?:表示一个字符串有一个a后跟零或Ab;a?b+$:表示字符串末尾有零个或一个a后跟一个或几个b。您还可以使用括在大括号中的范围来指示重复范围。ab{2}:表示一个字符串有一个a后跟2b("abb");ab{2,}:表示一个字符串有一个a后跟至少2个b;ab{3,5}:表示a字符串中有一个a,后跟3到5个b。请注意,您必须指定范围的下限(例如:{0,2}而不是{,2})。另外,您可能已经注意到,*、+和?等同于{0,}、{1,}和{0,1}。还有一个|,表示“或”运算:hi|hello:表示字符串中的“hi”或“hello”;(b|cd)ef:表示“bef”或“cdef”;(a|b)*c:表示一串“a”和“b”的混合字符串,后接一个“c”;。可以替换任意字符:a.[0-9]:表示一个字符串,“a”后跟一个任意字符和一个数字;^.{3}$:表示任意三个字符的字符串(长度为3个字符);方括号表示允许某些字符出现在字符串中的特定位置:[ab]:表示字符串中有一个“a”或“b”(相当于a|b);[a-d]:表示一个字符串包含小写的'a'到'd'之一(相当于a|b|c|d或[abcd]);^[a-zA-Z]:表示以字母开头的字符串;[0-9]%:百分号前一位数字;,[a-zA-Z0-9]$:表示字符串以逗号结尾,后面跟一个字母或数字。也可以在方括号中使用^表示不想出现的字符,并且^应该是方括号中的第一个字符。(例如:%[^a-zA-Z]%表示字母不应出现在两个百分号之间)。要逐字表达,您必须在^.$()|*+?{字符之前加上转义字符。请注意,在方括号内,不需要转义字符。1、校验位1的表示法数字:^[0-9]*$2n位数字:^d{n}$3至少n位数字:^d{n,}$4m-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位正实数:^[0-9]+(.[0-9]{1,3})?$11非零正整数:^[1-9]d*$或^([1-9][0-9]*){1,3}$或^+?[1-9][0-9]*$12非零负整数:^-[1-9][]0-9"*$或^-[1-9]d*$13非负整数:^d+$或^[1-9]d*|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)$2.校验字符1个汉字的表达式:^[\u4e00-\u9fa5]{0,}$2英文和数字:^[A-Za-z0-9]+$或^[A-Za-z0-9]{4,40}$3全长3-20字符:^.{3,20}$426个英文字母组成的字符串:^[A-Za-z]+$526个大写英文字母组成的字符串:^[A-Z]+$626个字母A组成的字符串由小写英文字母组成的字符串:^[a-z]+$7由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$8由数字、26个英文字母或下划线组成的字符字符串:^w+$or^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禁止输入含有~的字符:[^~\x22]+3.特殊需求表达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})+/.?3InternetURL:[a-zA-z]+://[^s]*或^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$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电话号码:(“XXX-XXXXXXX”、“XXXX-XXXXXXXX”、“XXX-XXXXXXXX”、“XXX-XXXXXXXX”、“XXXXXXXX”和“XXXXXXXX”:^((d{3,4}-)|d{3.4}-)?d{7,8}$6国内电话号码:(0511-4405222,021-87888822):d{3}-d{8}|d{4}-d{7}7身份身份证号(15位、18位):^d{15}|d{18}$8短身份证号(数字,以x结尾的字母):^([0-9]){7,18}(x|X)?$或者^d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$9账号是否合法(以字母开头,允许5-16字节,允许字母数字underscores):^[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日期格式:^d{4}-d{1,2}-d{1,2}13年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$14一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$15money的输入格式:161.我们可以接受的money有四种表达方式:"10000.00"和"10,000.00",and"10000"和"10,000"不带"fen":^[1-9][0-9]*$172.这表示任何不以0开头的数字,但也表示a不允许出现字符“0”,所以我们使用如下形式:^(0|[1-9][0-9]*)$183.一个0或者一个不以0开头的数字。我们也可以让一个负号开头:^(0|-?[1-9][0-9]*)$194.这个表示一个0或一个可能为负的不以0开头的数字。让用户从0开始。也删除负号,因为钱永远不会是负数。接下来我们要补充的是解释可能的小数部分:^[0-9]+(.[0-9]+)?$205.必须要解释最重要的是至少要有1小数点后的数字,所以是“10”。不传,传“10”和“10.2”:^[0-9]+(.[0-9]{2})?$216、这样我们规定后面必须有两位数小数点。如果你觉得太苛刻,你可以这样做:^[0-9]+(.[0-9]{1,2})?$227.这允许用户只写一位小数。接下来我们应该考虑数字中的逗号数字,我们可以这样做:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$238.1到3个数字,后跟任意数量的逗号+3个数字,逗号成为可选的,不是必需的:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$24备注:这是最后的结果,如果觉得空串也可以,别忘了把“+”换成“*”(奇怪,为什么?)最后,使用函数时不要忘记去掉反斜杠,这里一般报错25个xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\.[x|X][m|M][l|L]$26汉字正则表达式:[\u4e00-\u9fa5]27双字节字符:[^\x00-\xff](包括汉字,可用于计算字符串的长度(双字节字符的长度计为2,ASCII字符的长度计为1))28空行正则表达式:s*(可用于删除空行)29个HTML标签正则表达式:<(S*?)[^>]*>.*?|<.*?/>(网上流传的那个版本太烂了,上面那个也只是部分有效,对于复杂的嵌套标签还是无能为力)30个首尾空白字符的正则表达式:^s*|s*$or(^s*)|(s*$)(可以用来删除行首和行尾的空白字符(包括空格、制表符、Page符号等),非常好用的表达方式)31腾讯QQ号:[1-9][0-9]{4,}(腾讯QQ号从10000开始)32中国邮政编码:[1-9]d{5}(?!d)(中国邮政编码为6位数字)33IP地址:d+.d+.d+.d+(提取IP地址时有用)34验证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]?)\b35验证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-9]5]]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))
