1. 创建 RegExp 对象的语法:
方式1:new RegExp(pattern, attributes);
方式2:/pattern/attributes
参数 | 说明 |
---|---|
pattern | 是一个字符串,指定了正则表达式的模式或其他正则表达式。 |
attributes | 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。 |
1.1 方括号,用于查找某个范围内的字符:
表达式 | 描述 |
---|---|
[abc] | 查找方括号之间的任何字符。 |
[^abc] | 查找任何不在方括号之间的字符。 |
[0-9] | 查找任何从 0 至 9 的数字。 |
[a-z] | 查找任何从小写 a 到小写 z 的字符。 |
[A-Z] | 查找任何从大写 A 到大写 Z 的字符。 |
[A-z] | 查找任何从大写 A 到小写 z 的字符。 |
[adgk] | 查找给定集合内的任何字符。 |
[^adgk] | 查找给定集合外的任何字符。 |
1.2 元字符,是拥有特殊含义的字符:
元字符 | 描述 |
---|---|
. | 查找单个字符,除了换行和行结束符。 |
\w | 查找单词字符。 |
\W | 查找非单词字符。 |
\d | 查找数字。 |
\D | 查找非数字字符。 |
\s | 查找空白字符。 |
\S | 查找非空白字符。 |
\b | 匹配单词边界。 |
\B | 匹配非单词边界。 |
\0 | 查找 NUL 字符。 |
\n | 查找换行符。 |
\f | 查找换页符。 |
\r | 查找回车符。 |
\t | 查找制表符。 |
\v | 查找垂直制表符。 |
\xxx | 查找以八进制数 xxx 规定的字符。 |
\xdd | 查找以十六进制数 dd 规定的字符。 |
\uxxxx | 查找以十六进制数 xxxx 规定的 Unicode 字符。 |
1.3 量词
量词 | 描述 |
---|---|
n+ | 匹配任何包含至少一个 n 的字符串。 |
n* | 匹配任何包含零个或多个 n 的字符串。 |
n? | 匹配任何包含零个或一个 n 的字符串。 |
n{X} | 匹配包含 X 个 n 的序列的字符串。 |
n{X,Y} | 匹配包含 X 至 Y 个 n 的序列的字符串。 |
n{X,} | 匹配包含至少 X 个 n 的序列的字符串。 |
n$ | 匹配任何结尾为 n 的字符串。 |
^n | 匹配任何开头为 n 的字符串。 |
?=n | 匹配任何其后紧接指定字符串 n 的字符串。 |
?!n | 匹配任何其后没有紧接指定字符串 n 的字符串。 |
1.4 RegExp 对象方法
方法 | 描述 |
---|---|
compile | 编译正则表达式。 |
exec | 检索字符串中指定的值。返回找到的值,并确定其位置。 |
test | 检索字符串中指定的值。返回 true 或 false。 |
1.5 支持正则表达式的 String 对象的方法
方法 | 描述 |
---|---|
search | 检索与正则表达式相匹配的值。 |
match | 找到一个或多个正则表达式的匹配。 |
replace | 替换与正则表达式匹配的子串。 |
split | 把字符串分割为字符串数组。 |
2. 常用正则表达式
2.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})$/;
复制代码
手机号
时间截止为:2018年1月11日
移动号段:134 135 136 137 138 139 147 148 150 151 152 157 158 159 172 178 182 183 184 187 188 198
联通号段:130 131 132 145 146 155 156 166 171 175 176 185 186
电信号段:133 149 153 173 174 177 180 181 189 199
虚拟运营商:170
var isMobile = /^(13[0-9]|14[5-9]|15[012356789]|166|17[0-8]|18[0-9]|19[8-9])[0-9]{8}$/;
复制代码
固定电话
var isTel = /^(\+\d{2}-)?0\d{2,3}-\d{7,8}$/;
var isTel = /(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}/;
复制代码
QQ号码
var isQQ = /^[1-9][0-9]{4,10}$/;
复制代码
微信号码
微信号正则,6至20位,以字母开头,字母,数字,减号,下划线
var isWeixin = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;
复制代码
2.2 字符
纯中文
var isCn = /^[\u4e00-\u9fa5]+$/;
复制代码
英文字母
var isEn = /^[a-z]+$/i;
复制代码
大写英文字母
var isEn = /^[A-Z]+$/;
复制代码
字母和数字
var isEnAndNum = /^[a-z0-9]+$/i;
复制代码
英文、数字、下划线
var isStr = /^\w+$/;
复制代码
用户名
用户名正则,4到16位(字母,数字,下划线,减号)
var isUsername = /^[a-zA-Z0-9_-]{4,16}$/;
复制代码
密码
密码正则,以字母开头,长度在6~18之间,只能包含字母、数字和下划线
var isPwd =/^[a-zA-Z]\w{5,17}$/;
复制代码
强密码正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符
var isPwd = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;
复制代码
特殊字符检测
特殊字符:["'<>%;)(&+]+-!!@#$~
var isSchar = /["'<>%;)(&+]+-!!@#$~/;
复制代码
2.3 数字
数字
var isNum = /(^-?[0-9]\d*$)/;
var isNum = /^\d+$/;
复制代码
n个数字
var isNum = /^\d{n}$/;
复制代码
n个以上数字
var isNum = /^\d{n,}$/;
复制代码
m至n个数字
var isNum = /^\d{m,n}$/;
复制代码
2.4 网络
url地址
var isUrl = /^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i;
复制代码
域名
var isDomain = /^(?=^.{3,255}$)[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$/;
复制代码
IP地址
var isIP = /\d+\.\d+\.\d+\.\d+/;
复制代码
2.5 地理位置
邮政编码
var isMailCode = /[1-9]{1}(\d+){5}/;
var isMailCode = /^[1-9]\d{5}(?!\d)$/;
复制代码
经纬度
经度正则
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)$/;
复制代码
2.6 社会属性
身份证号
第一代身份证只有15位数,第二代身份证有18位数,各位按照需求来选择表达式。
第一、二代身份证
var isIdCard = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;
复制代码
第一代身份证(15位)
var isIdCard = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
复制代码
第二代身份证
var isIdCard = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
复制代码
护照
var isIdCard = /^(P\d{7}|G\d{7,8}|TH\d{7,8}|S\d{7,8}|A\d{7,8}|L\d{7,8}|\d{9}|D\d+|1[4,5]\d{7})$/;
复制代码
统一社会信用代码
参照标准:
《GB_32100-2015_法人和其他组织统一社会信用代码编码规则.》
按照编码规则:
标准规定统一社会信用代码用18位阿拉伯数字或大写英文字母(不适用I、O、Z、S、V)表示,分别是1位登记管理部门代码、1位机构类别代码、6位登记管理机关行政区划码、9位主体标识码、1位校验码。
第一部分(第1位)为登记管理部门代码,9表示工商部门;(数字或大写英文字母)
第二部分(第2位)为机构类别代码;(数字或大写英文字母)
第三部分(第3-8位)为登记管理机关行政区划码;(数字)
第四部分(第9-17位)为全国组织机构代码;(数字或大写英文字母)
第五部分(第18位)为校验码(数字或大写英文字母)
var isOrgCode = /^([0-9ABCDEFGHJKLMNPQRTUWXY]{2})(\d{6})([0-9ABCDEFGHJKLMNPQRTUWXY]{9})([0-9ABCDEFGHJKLMNPQRTUWXY])$/;
var isOrgCode = /^[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/g
复制代码
营业执照注册号
var isBusinessRegNo = /(^(?:(?![IOZSV])[\dA-Z]){2}\d{6}(?:(?![IOZSV])[\dA-Z]){10}$)|(^\d{15}$)/;
复制代码
不动产单元号
var isCode = /^\d{12}[GJZ][ABSXCDEFGHWY]\d{4}[1-9][FLQW]\d{7}[1-9]$/;
复制代码
组织机构代码
全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉丁字母)校验码组成。
var isOrgCode = /[A-Za-z0-9]{8}-[A-Za-z0-9]$/;
复制代码
车牌号码
var isCar = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;
复制代码
2.7 日期
匹配yyyy-MM-dd
var isDate = /^[1-2][0-9][0-9][0-9]-[0-1]{0,1}[0-9]-[0-3]{0,1}[0-9]$/;
复制代码
2.8 浏览器navigator.userAgent
从UA判断是否为IE浏览器
var userAgent = /msie (\d+\.\d+)/i;
复制代码
从UA判断是否为webkit内核
var userAgent = /webkit/i;
复制代码
从UA判断是否为chrome浏览器
var userAgent = /chrome\/(\d+\.\d+)/i;
复制代码
从UA判断是否为firefox浏览器
var userAgent = /firefox\/(\d+\.\d+)/i;
复制代码
从UA判断是否为opera浏览器
var userAgent = /opera(\/| )(\d+(\.\d+)?)(.+?(version\/(\d+(\.\d+)?)))?/i;
复制代码
从UA判断是否为Safari浏览器
var userAgent = /(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i;
复制代码
从UA中判断是否为Android系统
var userAgent = /android/i;
复制代码
从UA中判断是否为iPad
var userAgent = /ipad/i;
复制代码
从UA中判断是否为iPhone
var userAgent = /iphone/i;
复制代码
从UA判断是否为Mac OS平台
var userAgent = /macintosh/i;
复制代码
从UA中判断是否为Windows平台
var userAgent = /windows/i;
复制代码
从UA中判断是否为移动终端
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;
复制代码