常见的Regex表达式(更新RFC标准的email检验)
数字(Number)除正常的数字(digit)之外,还有可能包括正、负号,科学计数法,小数位,甚至用逗号分隔千分位。 逻辑规则:
满足上述条件检验数字的正则表达式为:^[+-]?d+(,d+)*(.d+(ed+)?)?$ 符合该条件的example包括:
且过滤掉小数点重复出现多次,科学技术法不合规或重复出现多次,非数字如720p的字符串 电话号码(Phone Numbers)美国的电话号码规则:总计10位数字,但有可能带有国家号码1。可以接受的输入格式包括:
满足上述条件检验美国电话的正则表达式为:^(+?1[s-])?(?d{3})?[s-]?d{3}[s-]?d{4}$ 进一步可以将国家号的验证修改为(+?d+[s-])?,这样就可以支持诸如+86,86,86-这样的格式了。 中国的手机规则:总计11位数字,一般情况下不加上任何特殊符号的分隔。如果仅考虑以下4种格式:
满足上述条件检验中国手机号码的正则表达式为:^(+86[s-]?)?d{11}$ 邮件(Email)由于工作需要,更详细的查阅了RFC对于邮件地址的标准要求。Google了很久居然始终没有找到一份靠谱的中文翻译。在此共享给大家,希望大家不用再去痛苦的翻那RFC晦涩的文档。 根据RFC 3696的规定,邮件地址(Email Address)被@符号分割为以下两个组成部分:local name和domain name. Local Name
Domain Name
对于日常使用中,忽略Local Name第4点的要求1和Domain Name对域名合法性的过滤,可以使用如下正则表达式检验Email的合法性: ^[A-Za-z0-9!#$%&'+/=?^_`{|}~-]+(.[A-Za-z0-9!#$%&'+/=?^_`{|}~-]+)*@([A-Za-z0-9]+(?:-[A-Za-z0-9]+)?.)+[A-Za-z0-9]+(-[A-Za-z0-9]+)?$ 如果使用Javascript的话,可以通过split函数,进一步检验每一部分的长度。 isemail: function(string){ if(typeof string === "string"){ var regex = /^[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*@([A-Za-z0-9]+(?:-[A-Za-z0-9]+)?.)+[A-Za-z0-9]+(?:-[A-Za-z0-9]+)?$/; var temp = string.split("@"); return regex.test(string) && temp[0].length <= 64 && temp[1].length <= 255; } else{ return false; } } 邮件的格式较为复杂,虽然实际上允许多级域名,只要长度保证在255个字符以内即可。不过更加常见的情况是,考虑@前面使用字符和.的情况,以及@后面可能会有二级域名的情况。如果不要求严格性而只是起到对于用户的提示作用的话,满足上述条件检验邮件的正则表达式为:^[w.]+(+[w.]+)?@w+(.w+){1,2}$ 如果可能的话,理解了原理之后,还是更加推荐使用成熟的库自带的email检验函数,毕竟重复造轮子不是一件非常有效率的事情。 密码(Password)不同强度的密码, 必须数字、字母和特殊字符3种混排的: IP地址IP地址是由4个使用句号(.)分割的数字序列组成,每段的数值取值在0-255之间。 检验IP地址的正则表达式如下: 使用Javascript,稍微优雅一点的表达方式 ip: function(string){ var octet = '(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])'; var ip = '(?:' + octet + '.){3}' + octet; var ipRE = new RegExp( '^' + ip + '$' ); return ipRE.test(string); } HTMLHTML更为推荐使用其他的方式而非正则表达式进行过滤。 更新记录2014年9月5日修改 2015年3月4日修改
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |