一、什么是正则表达式? 正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。 二、语法
/正则表达式主体/修饰符(可选)
eg: var regex = /test/i注: /test/i是一个正则表达式;test是正则表达式主体,用于检索;i是搜索不区分大小写的修饰符 常用修饰符:
修饰符描述i执行对大小写不敏感的匹配g执行全局匹配m执行多行匹配三、RegExp 对象方法
var str = "hello world" 方法描述实例test()检索字符串中指定的值,存在返回true, 不存在返回falsevar regex = /hello/g; console.log(regex.test(str)); //trueexec()检索字符串种指定的值,返回找到的值, 无该值返回nullvar 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*$/