但是,我比较懒,懒得记那些规则,一段时间不写,就忘记了规则……
所以,我决定,收集一些常用的需求和对应的正则表达式写法,随用随取就好了。以后我就不自己写了。
一、社交类
1. 邮箱
var isMail = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;var isMail = /^([A-Za-z0-9_\-\.\u4e00-\u9fa5])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$/;var isMain = [\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?;
2. 微信号(6至20位,以字母开头,字母,数字,减号,下划线)
var isWeixin = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;
3.QQ号
var isQQ = /^[1-9][0-9]{4,10}$/;
4. 手机号
// 1开头,第二位数是3/4/5/7/8的11位手机号码
^1[3,4,5,7,8,9]\d{9}$
// 移动号码
^134[0-8]\d{7}$|^(?:13[5-9]|147|15[0-27-9]|178|1703|1705|1706|18[2-478])\d{7,8}$
// 电信号码
^(?:133|153|1700|1701|1702|177|173|18[019])\d{7,8}$
// 联通号码
^(?:13[0-2]|145|15[56]|176|1704|1707|1708|1709|171|18[56])\d{7,8}|$
二、字符类
1. 中文
var isCn = /^[\u4e00-\u9fa5]+&/;
2.英文字母
var isEn = /^[a-z]+$/i;
3. 由数字、英文字符或下划线组成的字符串
^\\w+$
4. 特殊字符监测
var isSchar = /["'<>%;)(&+]+-!!@#$~/;
5. 身份证号
// 15位^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$// 18位^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$
6. 日期(yyyy-mm-dd格式,平年闰年考虑在内)
^(?:(?!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)$
7. 金额校验(精确到2位小数)
^[0-9]+(.[0-9]{2})?$
8. 校验密码强度(必须包含大小写字母和数字组合,长度8-10个字符
// 不能使用特殊符号^(?=.\d)(?=.[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$// 可以使用特殊符号^(?=.\d)(?=.[a-z])(?=.*[A-Z]).{8,10}$
9. 车牌号
var isCar = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;
10. 经纬度
// 经度var isLong = /^(\-|\+)?(((\d|[1-9]\d|1[0-7]\d|0{1,3})\.\d{0,6})|(\d|[1-9]\d|1[0-7]\d|0{1,3})|180\.0{0,6}|180)$/;// 纬度var isLat = /^(\-|\+)?([0-8]?\d{1}\.\d{0,6}|90\.0{0,6}|[0-8]?\d{1}|90)$/;
三、浏览器和平台相关
// IEvar userAgent = /msie (\d+\.\d+)/i;// webkit内核var userAgent = /webkit/i;// Chrome浏览器var userAgent = /chrome\/(\d+\.\d+)/i;// firefox浏览器var userAgent = /firefox\/(\d+\.\d+)/i;// safafi浏览器var userAgent = /(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i;// 安卓系统var userAgent = /android/i;// 移动端var userAgent = /(nokia|iphone|android|ipad|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220)/i;// Mac Os平台var userAgent = /macintosh/i;// Windows平台var userAgent = /windows/i;
四、其他
1. 域名
var isDomain = /^(?=^.{3,255}$)[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$/;
2. 匹配html标签属性
:".*?"|'.*?'|[\\^'">\\s]+))?)+\\s*|\\s*)\\/?>
3. 提取a链接
(]*)(href="https?:\\/\\/)((?!(?:(?:www\\.)?'.implode('|(?:www\\.)?', $follow_list).'))[^"]+)"((?!.*\\brel=)[^>]*)(?:[^>]*)>
4. 提取网页中的图片信息
\\img][^\\\\>]*[src] *= *[\\"\\']{0,1}([^\\"\\'\\ >]*)
5. 筛选出文本中的URL
^(f|ht){1}(tp|tps):\\/\\/([\\w-]+\\.)+[\\w-]+(\\/[\\w- ./?%&=]*)?
6. 检查url前缀(比如区分http或https)
if (!s.match(/^[a-zA-Z]+:\\/\\//)){ s = 'http://' + s;}
如果大家想自己练习写正则的能力,还可以用下面这个工具进行测试:
正则表达式在线测试工具——regex101
暂时想到这些,当然其中也有一些会随着时间推移慢慢更新的。
如果大家想到更多或者更好的写法,欢迎评论或私信我哦~
![8d17f470ef1eefe91c1a1effe9b9ad48.gif](https://img-blog.csdnimg.cn/img_convert/8d17f470ef1eefe91c1a1effe9b9ad48.gif)
CC推荐· 加我微信(codenotes66),进我的技术交流群· 关注我的公众号,做一个有趣的技术人………