常用正则表达式收集
2017-05-24 18:50
211 查看
常用正则表达式
手机号码
/^1[345789]\d{9}$/
邮箱
邮箱基本格式是 *****@**.** @以前是一个 大小写的字母或者数字开头,紧跟0到多个大小写字母或者数字或 . _ - 的字符串 @之后到.之前是 1到多个大小写字母或者数字的字符串 .之后是 1到多个 大小写字母或者数字或者.的字符串
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ # 严格的 ^[a-zA-Z0-9][a-zA-Z0-9._-]*\@[a-zA-Z0-9]+\.[a-zA-Z0-9\.]+$
中文
GBK (GB2312/GB18030)x00-xff GBK双字节编码范围
x20-x7f ASCII
xa1-xff 中文 gb2312
x80-xff 中文 gbk
UTF-8 (Unicode)
u4e00-u9fa5 (中文)
^[\u4e00-\u9fa5]+$
邮政编码
规则:六位数字,第一位不能为0^[1-9]\d{5}$
电话号码
规则:区号:3到5位,大部分都是四位。北京(010)和上海市(021)三位,西藏有部分五位,可以包裹在括号内也可以没有 如果有区号由括号包裹,则在区号和号码之间可以有0到1个空格,如果区号没有由括号包裹,则区号和号码之间可以有两位长度的 或者- 号码:7到8位的数字 例如:(010) 12345678 或者 (010)12345678 或者 010 12345678 或者 010--12345678
# 简单的:仅检测 010-12345678 形式的 ^\d{3}-\d{8}|\d{4}-\d{7}|\d{7}|\d{8}$ # 严格的 ^(((010)|(021)|(0\d3,4))( ?)([0-9]{7,8}))|((010|021|0\d{3,4}))([- ]{0,2})([0-9]{7,8})$
URL
规则:协议://域名(www/tieba/baike...).名称.后缀/文件路径/文件名 http://zhidao.baidu.com/question/535596723.html 协议://域名(www/tieba/baike...).名称.后缀/文件路径/文件名?参数 www.lhrb.com.cn/portal.php?mod=view&aid=7412 协议://域名(www/tieba/baike...).名称.后缀/文件路径/文件名/参数 http://www.xugou.com.cn/yiji/erji/index.php/canshu/11 协议:可有可无,由大小写字母组成;不写协议则不应存在://,否则必须存在:// 域名:必须存在,由大小写字母组成 名称:必须存在,字母数字汉字 后缀:必须存在,大小写字母和.组成 文件路径:可有可无,由大小写字母和数字组成 文件名:可有可无,由大小写字母和数字组成 参数:可有可无,存在则必须由?开头,即存在?开头就必须有相应的参数信息
# 简单的 ^https?:\/\/.+$ # 严格的 ^(([a-zA-Z]+)(:\/\/))?([a-zA-Z]+)\.(\w+)\.([\w.]+)(\/([\w]+)\/?)*(\/[a-zA-Z0-9]+\.(\w+))*(\/([\w]+)\/?)*(\?(\w+=?[\w]*))*((&?\w+=?[\w]*))*$
车牌号
^[\u4E00-\u9FA5][\da-zA-Z]{6}$
身份证号(IC)
规则: 15位纯数字或者18位纯数字或者17位数字加一位x^(([0-9]{15})|([0-9]{18})|([0-9]{17}x))$
IP
规则:格式: xx1.xx2.xx3.xx4 xx1可以是一位的 1-9,两位的01-99,三位的001-255 xx2和xx3可以是一位的0-9,两位的00-99,三位的000-255 xx4可以是一位的 1-9,两位的01-99,三位的001-255 四个参数必须存在
# 简单的: ^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$ # 严格的: ^((([1-9])|((0[1-9])|([1-9][0-9]))|((00[1-9])|(0[1-9][0-9])|((1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))))\.)((([0-9]{1,2})|(([0-1][0-9]{2})|(2[0-4][0-9])|(25[0-5])))\.){2}(([1-9])|((0[1-9])|([1-9][0-9]))|(00[1-9])|(0[1-9][0-9])|((1[0-9]{2})|(2[0-4][0-9])|(25[0-5])))$
时间
规则:形式可以为: 年-月-日 小时:分钟:秒 年-月-日 小时:分钟 年-月-日 年:1或2开头的四位数 月:1位1到9的数;0或1开头的两位数,0开头的时候个位数是1到9的数,1开头的时候个位数是1到2的数 日:1位1到9的数;0或1或2或3开头的两位数,0开头的时候个位数是1到9的数,1或2开头的时候个位数是0到9的数,3开头的时候个位数是0或1 小时:0到9的一位数;0或1开头的两位数,个位是0到9;2开头的两位数,个位是0-3 分钟:0到9的一位数;0到5开头的两位数,个位是0到9; 分钟:0到9的一位数;0到5开头的两位数,各位是0到9
^(([1-2][0-9]{3}-)((([1-9])|(0[1-9])|(1[0-2]))-)((([1-9])|(0[1-9])|([1-2][0-9])|(3[0-1]))))( ((([0-9])|(([0-1][0-9])|(2[0-3]))):(([0-9])|([0-5][0-9]))(:(([0-9])|([0-5][0-9])))?))?$
JavaScript用法
js里常使用regexp.test(string)方法进行正则匹配。示例:
var reg = /^1[345789]\d{9}$/; if(reg.test('13287656432')){ console.log('成功'); }
注意,js里的正则本身是个对象,不要加引号。匹配返回值:如果字符串string中含有与regexp匹配的文本,就返回true,否则返回false。
常用正则方法:
检测手机号:
function isMobile(num){ var reg = /^1[345789]\d{9}$/; if(reg.test(num)){ return true; } return false; }
检测中文:
function isChinese(str){ var reg = /^[\u4E00-\u9FA5]+$/; if(reg.test(str)){ return true; } return false; }
检测车牌号:
function isTruckNum(num){ var reg = /^[\u4E00-\u9FA5][\da-zA-Z]{6}$/; if(reg.test(num)){ return true; } return false; }
一个比较好用的正则匹配方法:
function is(type, value) { var map = { "English" : /^\w+$/, "password" : /^.{6,20}$/, "username" : /^\w{3,20}$/, "int" : /^\d+$/, "url" : /^https?:\/\/.+$/, "Chinese" : /^[\u4e00-\u9fa5]+$/, "mobile" : /^1[345789]\d{9}$/, "ip" : /^\d+([\.:]\d+)+$/, "telphone" : /^\d{3}-\d{8}|\d{4}-\d{7}|\d{7}|\d{8}$/, "email" : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/, "truck_num" : /^[\u4E00-\u9FA5][\da-zA-Z]{6}$/, //车牌号 }; return map[type].test(value); }
注意最后一句
map[type]不能写成
map.type。
调用方法:
if(is('mobile', '13287656432')){ console.log('成功'); }
PHP用法
PHP里使用preg_match()匹配正则。示例:
匹配手机号码:
if(preg_match('/^1[345789]\d{9}$/', '13287656432')){ echo '成功'; }
preg_match()返回 pattern 的匹配次数。 它的值将是0次(不匹配)或1次,因为
preg_match()在第一次匹配后 将会停止搜索。
preg_match_all()不同于此,它会一直搜索subject直到到达结尾。 如果发生错误 preg_match() 返回 FALSE 。
特别注意的是php里的中文匹配有点特殊。php中是用\x表示十六进制数据的。那么最终匹配中文的表达式是:
if(preg_match('"/^[\x{4e00}-\x{9fa5}]+/u"', '中文')){ echo '成功'; }
这里给个写的比较好的方法,可以检测常用的正则:
/** * 类型判断 * @example is('url', 'baidu.com');//返回false */ function is($type, $var) { $map = array( 'English' => '/^\w+$/', 'password' => '/^.{6,20}$/', 'username' => '/^\w{3,20}$/', 'int' => '/^\d+$/', 'url' => '/^https?:\/\/.+$/', 'Chinese' => '/^[\x{4e00}-\x{9fa5}]+$/u', 'mobile' => '/^1[345789]\d{9}$/', 'ip' => '/^\d+([\.:]\d+)+$/', 'telphone' => '/^\d{3}-\d{8}|\d{4}-\d{7}|\d{7}|\d{8}$/', 'email' => '/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/', 'truck_num' => '/^[\x{4e00}-\x{9fa5}][a-zA-Z\d]{6}$/u', //车牌号 ); return isset($map[$type]) && preg_match($map[$type], $var); }
调用方法:
if(is('mobile', '13287656432')){ echo '成功'; }
Python用法
Python里使用re模块的
match()方法进行正则匹配:
# coding: utf-8 import re if re.match(r'^1[35789]\d{9}$', '13271222223'): print('ok') else: print('not match')
如果匹配成功,返回一个
Match对象,否则返回
None。
参考:
1、正则表达式30分钟入门教程_脚本之家
http://www.jb51.net/tools/zhengze.html
2、php中utf-8编码下用正则表达式如何匹配汉字_正则表达式_脚本之家
http://www.jb51.net/article/19790.htm
3、http://blog.csdn.net/eightwhells/article/details/8935390
4、Python学习--16 正则表达式 - 飞鸿影~ - 博客园
http://www.cnblogs.com/52fhy/p/6376296.html
本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加)。
QQ群: 281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29LoD19)相关文章推荐