logo头像

javaScript 正则表达式

正则表达式规则

  1. 普通字符

    字母、数字、汉子、下划线、以及没有特殊定义的标点符号,都是普通字符。

  2. 简单转义字符

    采用前面加”/“的方法进行。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    \r, \n  代表回车和换行符

    \t 制表符

    \/ 代表 "/" 本身

    ^, $ 都有特殊意义,如果要想匹配字符串中 "^""$" 字符,则表达式就需要写成 "\^""\$"

    \^ 匹配 ^ 符号本身

    \$ 匹配 $ 符号本身

    . 匹配小数点(.)本身
  3. 能够与 ‘多种字符’ 匹配的表达式

    正则表达式中的一些表示方法,可以匹配’多种字符’其中的任意一个字符,比如”\d”可以匹配任意一个数字。虽然可以匹配其中任意的字符,但是只能是一个,不是多个。

    1
    2
    3
    4
    \d   任意一个数字,0~9中的任意一个
    \w 任意一个字母、数字、下划线,A~Z,a~z,0~9,_中的任意一个
    \s 包含空格、制表符、换页符等空白字符的其中任意一个
    . 小数点可以匹配除换行符(/n)以外任意一个字符
  4. 自定义能够匹配’多种字符’的表达式

    使用方括号[]包含一系列字符,能够匹配其中任意一个字符。[^]包含一系列,则能够匹配其中字符之外的任意一个字符。同样,虽然匹配但只匹配一个,不是多个。

    1
    2
    3
    4
    [ab5@]   匹配"a""b""5""@"
    [^abc] 匹配"a","b","c"之外的任意一个字符
    [f-k] 匹配"f"~"k"之间的任意字母
    [^A-F0~3] 匹配"A"~"F","0"~"3"之外的任意字符
  5. 修饰匹配次数的特殊符号

    无论是只能匹配一种字符的表达式,还是可以匹配多种字符其中任意一个的表达式,都只能匹配一次。如果使用表达式再加上修饰匹配次数的特殊符号,那么不用重复书写表达式就可以重复匹配。

    使用方法是:”次数修饰”放在”被修饰的表达式”后边。比如:”[bcd][bcd]” 可以写成 “[bcd]{2}”。

    1
    2
    3
    4
    5
    6
    {n}    表达式重复n次,比如:"\w{2}" 相当于 "\w\w""a{5}" 相当于 "aaaaa"
    {m,n} 表达式至少重复m次,最多重复n次,比如:"ba{1,3}"可以匹配 "ba""baa""baaa"
    {m,} 表达式至少重复m次,比如:"\w\d{2,}"可以匹配 "a12","_456","M12344"...
    ? 匹配表达式0次或者1次,相当于 {0,1},比如:"a[cd]?"可以匹配 "a","ac","ad"
    + 表达式至少出现1次,相当于 {1,},比如:"a+b"可以匹配 "ab","aab","aaab"...
    * 表达式不出现或出现任意次,相当于 {0,},比如:"\^*b"可以匹配 "b","^^^b"...
  6. 其他一些代表抽象意义的特殊符号

    一些符号在表达式中代表抽象的特殊意义:

    1
    2
    3
    ^    字符开始的地方匹配,不匹配任何字符
    $ 字符串结束的地方匹配,不匹配任何字符
    \b 匹配一个单词的边界,也就是单词和空格直接的位置,不匹配任何字符

    一些符号可以影响表达式内部子表达式之间的关系:

    1
    2
    |    左右两边表达式直接"或"关系,匹配左边或者右边
    () 1.在被修饰匹配次数时,括号内的表达式可以作为整体被修饰 2.取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到
  7. 定义表达式

    定义正则表达式有两种形式,一种是普通方式,一种是构造函数方式。

    普通方式: var reg = /表达式/附加参数
    附加参数:

    1
    2
    3
    g:    匹配全局
    i: 不区分大小写匹配
    m: 多行匹配

    构造函数方式: var reg = new RegExp(“表达式”,”附加参数”);

  • ()、[]、{}区别
    • () 作用提取匹配的字符串,表达式中有几个()就会得到几个相应的匹配字符串.如(\s+)表示连续的空格字符串
    • [] 定义范围.如[a-zA-Z0-9]表示要匹配英文字母和数字
    • {} 一般用来匹配长度.如\d{3}表示3个空格,\d[1,3],匹配1-3个空格
  • ^和$
    • ^ 匹配一个字符串的开头,如(^a)就是a开头的字符串
    • $ 匹配一个字符串结尾,如(b$)以b为结尾的字符串
    • ^ 还有一个作用取反,如[^xyz]表示不包含xyz的字符