# 正则相关

# 说说你对正则表达式的理解?它会有哪些应用场景?

正则表达式是一种用来匹配字符串的强有力的武器 它的设计思想是用一种描述性的语言定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的

  • 具有特殊意义的元字符
    • \d 匹配0-9的数字,相当于[0-9]
    • \D 匹配除了0-9的任意字符
    • \w 匹配0-9、a-z、A-Z、_ 的数字或字符,相当于[0-9a-zA-Z_]
    • \W 匹配不是字母、数字、下划线的字符
    • \n 匹配换行
    • ^ 匹配字符串的开始位置
    • $ 匹配字符串的结束位置
    • \ 转义字符
  • 限定元字符
    • + 重复1次或更多次, 相当于{1,}
    • ?重复0次或1次, 相当于{0,1}
    • * 重复任意次, 相当于{0,}
    • {n} 重复n次
    • {n,} 重复n次或者大于n次
    • {n,m} 重复n到m次
  • 其他
    • x | y x或者y
    • [xyz] x、y、z中的任意一个 例:[abc] 可以匹配add中的a
    • [^xyz] 除了xyz中的任意一个字符 例:[abc] 可以匹配add中的dd
    • [a-z] 匹配a-z中的任意一个字符
    • [^a-z] 匹配除了a-z中的任意一个字符
    • () 将括号里面的字符作为整体进行匹配, 括号里面的内容是一个子表达式或者叫分组
  • 验证电话
    • /^1[3456789]\d{9}$/.test(phone)
  • 验证邮箱
    • /^([a-zA-Z]|[0-9])(\w|-)+@[a-zA-Z0-9]+.([a-zA-Z]{2,4})$/.test(email)