一、什么是正则表达式?
正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
二、语法
/正则表达式主体/修饰符(可选)
eg: var regex = /test/i
注: /test/i是一个正则表达式;test是正则表达式主体,用于检索;i是搜索不区分大小写的修饰符
常用修饰符:
修饰符 | 描述 |
---|---|
i | 执行对大小写不敏感的匹配 |
g | 执行全局匹配 |
m | 执行多行匹配 |
三、RegExp 对象方法
var str = "hello world"
方法 | 描述 | 实例 |
---|---|---|
test() | 检索字符串中指定的值,存在返回true, 不存在返回false | var regex = /hello/g; console.log(regex.test(str)); //true |
exec() | 检索字符串种指定的值,返回找到的值, 无该值返回null | var regex = /hello/g; console.log(regex.exec(str)); //[“hello”, index: 0, input: “hello world”, groups: undefined] |
toString() | 返回正则表达式字符串 | var regex = /hello/g; console.log(regex.toString()); //hello/g |
四、正则表达式的使用
正则表达式通常用于校验以及搜索/替换,校验时通常需要在前后分别加上^和$,以匹配整个待验证字符串;
1)字符类匹配
[…] 查找方括号之间的任何字符
[^…] 查找任何不在方括号之间的字符
[a-z] 查找任何从小写 a 到小写 z 的字符
[A-Z] 查找任何从大写 A 到大写 Z 的字符
[A-z] 查找任何从大写 A 到小写 z 的字符
. 查找单个字符,除了换行和行结束符
\w 查找单词字符,等价于[a-zA-Z0-9]
\W 查找非单词字符,等价于[^a-zA-Z0-9]
\s 查找空白字符
\S 查找非空白字符
\d 查找数字,等价于[0-9]
\D 查找非数字字符,等价于[^0-9]
\b 匹配单词边界
\r 查找回车符
\t 查找制表符
\0 查找 NULL 字符
\n 查找换行符
2)重复字符匹配
{n,m} 匹配前一项至少n次,但不能超过m次
{n,} 匹配前一项n次或更多次
{n} 匹配前一项n次
n? 匹配前一项0次或者1次,也就是说前一项是可选的,等价于{0,1}
n+ 匹配前一项1次或多次,等价于{1,}
n* 匹配前一项0次或多次,等价于{0,}
n$ 匹配任何结尾为 n 的字符串
^n 匹配任何开头为 n 的字符串
?=n 匹配任何其后紧接指定字符串 n 的字符串
?!n 匹配任何其后没有紧接指定字符串 n 的字符串
五、常用正则校验
验证类型 | 正则表达式 |
---|---|
手机号 | /^0?(13[0-9] |
电子邮箱 | /^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$/ |
密码【6-20位】 | /^[@A-Za-z0-9!#%^&*.~,]{6,20}/ |
固话 | /0\d{2,3}-\d{7,8}/ |
纳税识别号 | /^((\d{6}[0-9A-Z]{9}) |
账户名称【汉字、字母、数字、“-”、“_”的组合】 | /[A-Za-z0-9_-\u4e00-\u9fa5]$/ |
身份证 | 正则表达式会识别成脚注,单独写在下面 |
金钱 | 如下所示 |
正整数 | 如下所示 |
身份证验证:
/^[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{3}([0-9]|X)$/
金额验证:
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/
正整数【不包含0】的验证:
/^[1-9]\d*$/