正则

发布时间 2024-01-04 21:13:10作者: dhyuannn

【一】正则

(1)网址

http://tool.chinaz.com/regex/

(2)字符组

  • 字符组 :[] 在同一个位置可能出现的各种字符组成了一个字符组
  • 在正则表达式中用[]表示
  • [0123456789] # 匹配0-9中某个字符的单个结果
    [0-9] # 匹配0-9中某个字符的单个结果
    [a-z] # 匹配a-z中某个字符的单个结果
    [A-Z] # 匹配A-Z中某个字符的单个结果
    [0-9a-zA-Z] # 匹配数字或小写字母或大写字母的单个结果

(3)元字符

\w # 只能匹配字母或数字或下划线,也不能匹配换行符
\s # 只能匹配任意的空白符(其实就是空格)
\d # 只能匹配任意的数字
\n # 匹配换行符(其实就是回车键)
\t # 匹配制表符(其实就是tab键)
\b # 匹配一个单词的结尾

\W # 不能匹配字母或数字或下划线,也不能匹配换行符
\D # 不能匹配任意的数字
\S # 不能匹配任意的空白符(其实就是空格)

^ # 匹配字符串的开始的字符
$ # 匹配字符串的结尾的字符
| # 管道符,表示或 前面的字符或者后面的字符
() # 优先匹配括号内部的表达式
[] # 匹配到字符组内的字符

(4)量词

  •                             重复零次或多次 
    
  •                             重复一次或多次 
    

? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

(5)重复匹配

?表示重复零次或一次,即只匹配一个任意字符

+表示重复一次或多次,即只匹配1个或多个任意字符

*表示重复零次或多次,即匹配0或多个任意字符

{}匹配输入的任意字符

(6)字符集

[]取字符组中的任意一个 若是[]*可以重复无数次

[^]表示匹配一个不是字符任意次

(7)分组匹配 (身份证)

^[1-9]\d{13,16}[0-9x]$	330302199907036519	330302199907036519	可以匹配一个正确的身份证号
^[1-9]\d{13,16}[0-9x]$	3303021999070365199	330302199907036519	也可以匹配这串数字
^[1-9]\d{14}(\d{2}[0-9x])?$	3303021999070365199 	不会匹配到错误的身份证号
`^([1-9]\d{16}[0-9x]	[1-9]\d{14})$`	330302199907036519	330302199907036519

(8)贪婪匹配

  • 贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配

  • ?取消非贪婪模式

    • 前提是你这个匹配条件支持贪婪模式
  • 几个常用的非贪婪匹配,Pattern

  • *? 重复任意次,但尽可能少重复

  • +? 重复1次或更多次,但尽可能少重复

  • ?? 重复0次或1次,但尽可能少重复

  • {n,m}? 重复n到m次,但尽可能少重复

  • {n,}? 重复n次以上,但尽可能少重复