开发技能前端正则表达式

正则表达式 – 教程 | 菜鸟教程

正则表达式语法(注意修饰符和优先级)

字符匹配
  • 普通字符:普通字符按照字面意义进行匹配,例如匹配字母 "a" 将匹配到文本中的 "a" 字符。
  • 元字符:元字符具有特殊的含义,例如 \d 匹配任意数字字符(等价于 [0-9]),\w 匹配任意字母数字字符(等价于 [A-Za-z0-9_]),匹配除换行符(\n、\r)之外的任何单个字符(等价于 [^\n\r])等。
量词
  • *:匹配前面的模式零次或多次。
  • +:匹配前面的模式一次或多次。
  • ?:匹配前面的模式零次或一次。
    • runoo+b,可以匹配 runoob、runooob、runoooooob 等,+_ 号代表前面的字符必须至少出现一次(1次或多次)。_
    • runoo*b,可以匹配 runob、runoob、runoooooob 等,*****_ 号代表前面的字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)。_
    • colou?r_ 可以匹配 color 或者 colour? 问号代表前面的字符最多只可以出现一次(0次或1次)。_
  • {n}:匹配前面的模式恰好 n 次。
  • {n,}:匹配前面的模式至少 n 次。
  • {n,m}:匹配前面的模式至少 n 次且不超过 m 次。
字符类
  • [ ]:匹配括号内的任意一个字符。例如,[abc] 匹配字符 "a"、"b" 或 "c"。
  • [^ ]:匹配除了括号内的字符以外的任意一个字符。例如,[^abc] 匹配除了字符 "a"、"b" 或 "c" 以外的任意字符。
边界匹配
  • ^:匹配字符串的开头。
  • $:匹配字符串的结尾。
  • \b:匹配单词边界。
  • \B:匹配非单词边界。
分组和捕获 ()?:
  • ( ):用于分组和捕获子表达式。
  • (?: ):用于分组但不捕获子表达式。
特殊字符
  • \ :转义字符,用于匹配特殊字符本身。
  • . :匹配任意字符(除了换行符)。
  • | :用于指定多个模式的选择。
?=、?≤、?!、?<! 的使用区别

exp1(?=exp2):查找 exp2 前面的 exp1。

(?≤exp2)exp1:查找 exp2 后面的 exp1。

exp1(?!exp2):查找后面不是 exp2 的 exp1。

(?<!exp2)exp1:查找前面不是 exp2 的 exp1。

实例应用:

  • 验证帐号是否合法

验证规则:字母、数字、下划线组成,字母开头,4-16位。

/^[a-zA-z]\w{3,15}$/
  • 密码强度正则

验证规则:最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符。

 /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/
  • 电话号码

验证规则:区号+号码

区号以0开头,3位或4位

号码由7位或8位数字组成

区号与号码之间可以无连接符,也可以“-”连接

/^0\d{2,3}-?\d{7,8}$/
  • 邮箱

验证规则:姑且把邮箱地址分成“第一部分@第二部分”这样
第一部分:由字母、数字、下划线、短线“-”、点号“.”组成,
第二部分:为一个域名,域名由字母、数字、短线“-”、域名后缀组成,
而域名后缀一般为.xxx或.xxx.xx,一区的域名后缀一般为2-4位,如cn,com,net,现在域名有的也会大于4位

 /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/
  • 身份证

身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X

/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
Built with LogoFlowershow