:::info 主要用来描述字符串的匹配模式,用来验证、提取、替换字符串 :::
常用的一些符号说明
字符 | 说明 | 字符 | 说明 |
---|---|---|---|
[ABC] | 匹配包含ABC | . | 匹配除了换行符的其他字符 |
[^ABC] | 匹配除了ABC | [\s] [\S] | 匹配所有空白符,s包括换行 |
[A-Z] | 匹配A到Z的所有字母 | \w等同于[A-Za-z0-9_] | 匹配字母数字下划线 |
^ | 匹配开始的位置 | [\r] | 匹配回车符 |
$ | 匹配结束的位置 | [\n] | 匹配换行符 |
+ | +前的字符至少一个 | * | *前的字符任意个 |
? | ?前的字符0或1个 | {n,m} | 表达式 |
A|B | A或者B中的一个 | ||
修饰符:i:不区大小写,g全局,m多行 |
一般的写法
//写法
var reg=/^\d{3}$/ //新写法:匹配三位的随意数组
var reg=new RegExp(^\d{3}$) //以前的写法,了解一下,
//验证
reg.test('012') //返回验证结果boolean
//按正则获取匹配的内容,返回一个数组
var re = /^(\d{3})-(\d{3,8})$/;
re.exec('010-12345'); // ['010-12345', '010', '12345']
//返回匹配的字符
/*
g 全局 | 匹配多次
*/
'a1a'.match(/a/g) // ['a','a'] | 默认只匹配一次
:::success 一般项目的开发用到的正则就那几个,我记录一些,基本符号还是得清楚 :::
常用正则
<!--数字-->
至少n位的数字:^\d{n,}$
m-n位的数字:^\d{m,n}$
<!--电话手机号-->
手机号码:^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$
国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
电话号码正则表达式(支持手机号码,3-4位区号,7-8位直播号码,1-4位分机号): ((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)
<!--密码-->
密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$
强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8-10 之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$
强密码(必须包含大小写字母和数字的组合,可以使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
强密码(必须包含大小写数字和特殊符号 长度-~32):/(^(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*)(?=.*[`~!@#$%^&*()_\-+=<>.?:"{}].*).{8,32}$)/
<!--其他-->
汉字:^[\u4e00-\u9fa5]{0,}$
Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
身份证号(15位、18位数字),最后一位是校验位,可能为数字或字符X:^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$
日期格式:^\d{4}-\d{1,2}-\d{1,2}
年龄(大于18小于60):1[8-9]|[2-5][0-9]|60
常用的其他地方用到正则
//字符串变数组
'a b c'.split(/\s+/) // ['a','b','c'] | 裁剪
//替换字符串里某个字符,返回一个新字符串
'a'.replace(/\w/,'b') // b
//默认返回一次,返回字符串里匹配上的字符
'abc'.match(/a/) // ["a", index: 0, input: "abc"]