正则表达式中常见的的元字符和修饰符

正则表达式由两部分组成:元字符、修饰符

元字符

元字符又分为量词元字符、特殊元字符、普通元字符

量词元字符

元字符 含义
* 0~多次
+ 1~多次
? 0次 或 1次
{n} 出现n次,n为0或正整数
{n,} n~多次
{n,m} n~m次

特殊元字符

元字符 含义
\ 转义字符,可以普通转特殊 or 特殊转普通
. 除了\n以外的任意字符
^ 以…开头
$ 以…结束
\n 换行
\t 一个制表符tab(四个空格)
\d 0~9之间的一个数字
\D 非0~9之间的一个数字
\w 数字、字母、下划线中的任一字符
\W 非数字、字母、下划线的任一字符
\s 一个空白字符(空格、制表符、换页符等)
\S 除了空白字符的任一字符
\b 一个单词边界
\B 除单词边界的任一字符
x y
[xyz] x或y或z中的一个字符
[^xy] 除x、y之外的任一字符
[a-z] a-z范围内的任一字符, [A-Z],[0-9]同理
[^a-z] 非a-z范围内的任一字符
() 分组
(问号冒号) 只匹配不捕获
(?=) 正向预查
(?!) 负向预查

特殊详细说明:

  • ^ $
    • /^\d/:以数字开头
    • /\d$/:以数字结尾
    • /\d/:只要包含数字即可
    • /^\d+$/:只能是1~多个数字
    • 验证手机号码(11位, 以1开头): /^1\d{10}$/
  • \ 转义字符
    • /^2.3$/ => 注:.不代表小数点,而是除\n以外的任一字符
    • 若只想匹配2.3,则应将.进行转义,即/^2.3$/
    • let str = "\d"; reg = /^\d$/ => 不匹配,字符串中\d也有特殊含义;/^\\d$/.test("\\d") => 匹配
  • x|y
    • eg. let reg = /^18|29$/,我们想要得到18或29。但18、29、129、189、1829、829、182全部符合!
    • 根据上例,对于2位及以上的数字,直接使用x|y这种方式存在很乱的优先级问题。一般我们使用()分组,改变优先级,即/^(18|29)$/
  • []
    • []中出现的字符一般都代表本身的含义。eg./^[@+]+$/,第一个+代表它本身,即"+"字符;第二个+代表出现1~多次。
    • 注意:[\d]的本身含义就是0-9范围内的一个数字,[\d]将其转义就变为普通字符[\d],代表""或者"d"其中的一个。
    • []中不存在多位数。例如,[18]的含义为1或8,而不是18;[10-29]代表1、0到2(其中一个)、9三个字符,而不是10到29。

普通元字符

代表本身含义,无需记忆。

修饰符

修饰符 含义
i 忽略大小写匹配
m 忽略换行匹配
g 全局匹配

你可能感兴趣的:(正则表达式)