:::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多行

一般的写法

  1. //写法
  2. var reg=/^\d{3}$/ //新写法:匹配三位的随意数组
  3. var reg=new RegExp(^\d{3}$) //以前的写法,了解一下,
  4. //验证
  5. reg.test('012') //返回验证结果boolean
  6. //按正则获取匹配的内容,返回一个数组
  7. var re = /^(\d{3})-(\d{3,8})$/;
  8. re.exec('010-12345'); // ['010-12345', '010', '12345']
  9. //返回匹配的字符
  10. /*
  11. g 全局 | 匹配多次
  12. */
  13. 'a1a'.match(/a/g) // ['a','a'] | 默认只匹配一次

:::success 一般项目的开发用到的正则就那几个,我记录一些,基本符号还是得清楚 :::

常用正则

  1. <!--数字-->
  2. 至少n位的数字:^\d{n,}$
  3. m-n位的数字:^\d{m,n}$
  4. <!--电话手机号-->
  5. 手机号码:^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$
  6. 国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
  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}))$)
  8. <!--密码-->
  9. 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$
  10. 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8-10 之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$
  11. 强密码(必须包含大小写字母和数字的组合,可以使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
  12. 强密码(必须包含大小写数字和特殊符号 长度-~32):/(^(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*)(?=.*[`~!@#$%^&*()_\-+=<>.?:"{}].*).{8,32}$)/
  13. <!--其他-->
  14. 汉字:^[\u4e00-\u9fa5]{0,}$
  15. Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
  16. 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
  17. 身份证号(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}$
  18. 日期格式:^\d{4}-\d{1,2}-\d{1,2}
  19. 年龄(大于18小于60):1[8-9]|[2-5][0-9]|60

常用的其他地方用到正则

  1. //字符串变数组
  2. 'a b c'.split(/\s+/) // ['a','b','c'] | 裁剪
  3. //替换字符串里某个字符,返回一个新字符串
  4. 'a'.replace(/\w/,'b') // b
  5. //默认返回一次,返回字符串里匹配上的字符
  6. 'abc'.match(/a/) // ["a", index: 0, input: "abc"]