• 正则表达式字符表


    转义字符表:

    代码

    说明

    举例

    \b

    匹配一个单词的边界

    ‘er\b’匹配以”er”结尾的单词,’\bne’匹配以”ne”开头的单词,’\bnever\b’仅匹配单词”never”

    \B

    匹配非单词边界

    ‘er\B’匹配任何包含”er”的单词

    \c

    一般写法为\cx,匹配由x指明的控制字符,x的值必须为A-Z或a-z之一。否则将c视为一个原意的’c’字符

    ‘\cM’匹配一个Control-M或回车符

    \d

    匹配数字字符。等价于[0-9]

    ‘\d{3}’匹配3个数字

    \D

    匹配一个非数字字符

    ‘\D{3}’匹配3个非数字字符

    \f

    匹配一个换页符。等价于\x0c和\cL

     

    \n

    匹配一个换行符。等价于\x0a和\cJ

     

    \r

    匹配一个回车符。等价于\x0d和\cM

     

    \s

    匹配任何空白字符,包括空格、换页、制表符等。等价于[\f\n\f\t\v]

     

    \S

    匹配任何非空白字符。等价于[^v]

     

    \t

    匹配一个制表符。等价于\x09和\cI

     

    \v

    匹配一个垂直制表符。等价于\x0b和\cK

     

    \w

    匹配包括下划线的任何单词字符。等价于[A-Xa-z0-9_]

     

    \W

    匹配任何非单词字符[^A-Xa-z0-9_]

     

    \x

    一般写法为\xn,匹配n,其中n为16进制转义值。16进制转义值必须为确定的两个数字长。

    ‘\x41’匹配”A”。’\x041’则等价于’ ’和”1”

    \u

    一般写法为\un,其中n是一个用四个16进制数字表示的Unicode字符

    ‘\u00A9’ 匹配版权符号©

    选择和分组:

    代码

    说明

    举例

    |

    一般用法为A|B, 表示匹配A或者B

    man|woman   表示可以匹配 man 或者 woman

    (

    一般与 ) 联用,用来表示一个被获取的匹配

    var   a=/qq=(\d+)/.test("qq=10000");alert(RegExp.$1); 将会弹出10000,   可以看到正则表达式中,\d+被括号围起来了,那么匹配之后,括号中匹配的内容将被"获取",并存入到RegExp.$1中,所以现在RegExp.$1就存了\d+匹配得到的内容。如果正则表达式中有2个或者更多括号,第一个括号的内容为$1, 后面依次为$2,$3..$N

    [

    一般与 ] 联用, 用来表示一个字符的集合

    [abc]   可以匹配一个a或者一个b或者一个c

    [ab]+   可以匹配多个a或者多个b或者混合,如:"ababababab"   或 "aaaaa", "bbbbb"

    ?:

    表示一个非获取匹配,它的作用是让()变成普通的范围限定符,而不将其匹配内容存储至$N中

    'industr(?:y|ies)   可以匹配industry 或者 industries

    ?!

    非匹配预查,一般写法是(?!xxx),在任何不匹配xxx字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。

    (1).   'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows   2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始

    (2).   预查的流程,参见   ?= 的解释

    ?=

    匹配预查,一般写法是(?=xxx), 在任何匹配xxx字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。

    (1).   'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows   3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。

    (2).   var x="12345";alert(x.match(/(?=\d{2})\d{1}/g));结果弹出1,2,3,4,每次匹配只消耗1个字符,而括号内的?=\d{2}是非获取的,不消耗字符,所以匹配了1之后,是从2开始查找,而不是3。

    (3).   如果上方的说明不易理解,你可以把(?=)看成是一个探查敌情的侦察兵,而要被搜索的那个字符串为敌人区域,(?=xxx)   就是让?=这个侦察兵去敌人区域里找xxx, 例如上例中的?=\d{2},是要求查找2个数字,?=从头开始搜索,首先会找到12, 找到之后,我们就拿\d{1}尝试去匹配(占领)找到的这个位置,那么\d{1}就是匹配的1, 匹配结束后,相当于我们已经占领了敌人的1这个山头,?=作为侦察兵继续奔向下一个山头,23,同样,我们又拿\d{1}占领2这个山头,一直占到第4个山头,侦察兵继续往后,只有5一个数字了,不符合\d{2}这个条件(需要2个数字),侦查结束。

    限定符:

    代码

    说明

    举例

    *

    表示一个字符重复任意次包括0次

    (1). a* 表示希望匹配的字符串含有任意数目的字符a

    (2). [a-z]* 表示希望匹配到任意个小写字母

    +

    表示一个字符重复至少1次

    a+ 表示希望匹配的字符串中最少含有1个a字符

    ?

    1.表示一个字符出现0次或1次

    2.用来启用非贪婪模式

    3.结合:,!,=等字符用于其它功能

    1.a? 表示希望匹配的字符串中可能含有1个a字符

    2.<[\s\S]+?>   去匹配<abc><abc>得到的是<abc>,如果不加问号,则得到<abc><abc>

    3. 详见, ?:, ?=, ?!

    {

    一般与 } 联用,表示所匹配字符的数量或数量范围

    (1). X{2} 表示匹配2个X

    (2). X{2,} 表示匹配2个或者更多个X

    (3). X{2,5} 表示匹配2-5个X

    *?

    *的非贪婪写法

    (1). 见 +?

    (2). 另见: ?? , +?

    +?

    +的非贪婪写法

    [\s\S]+?# 去匹配aaa#bbbb#时,会匹配aaa#,而[\s\S]+#则会匹配aaa#bbbb#

    ??

    ?的非贪婪写法

    (1). 见 +?

    (2). 另见: *? , +?

     定位符:

    代码

    说明

    举例

    \b

     

     

    \B

     

     

    ^

    1.取补集

    2.表示字符串开头

    (1). [^a] 表示除了a之外的字符集,当^位于[]之中才做此用途

    (2). [^\s] 表示除了空白类字符之外的所有字符集

    (1). ^abc 表示希望匹配的字符串以abc开头

    $

    1.表示字符串结尾

    2.$N 表示匹配后,被正则中第N个括号所获取的内容

    (1). abc$ 表示希望匹配的字符串以abc结尾

    其他字符:

    代码

    说明

    举例

    g

    1.在javascript中,置于正则表达式末尾,例如:var x=/abc/g, 或者作为RegExp的第2个参数, 例如:var x=new   RegExp("abc","g"); 表示搜索整个字符串。

    2.与i或m一起使用

    (1).   /a\d/g 去匹配字符串"a1bca2cda3xx"   可以得到 "a1","a2","a3" 3个匹配。

    (1).   var x=/abc/gi;

    (2).var   x=new RegExp("abc","gi");

    i

    1.在javascript中,置于正则表达式末尾,例如:var x=/abc/i, 或者作为RegExp的第2个参数, 例如:var x=new   RegExp("abc","i"); 表示匹配时,不区分大小写。

    2.与g或m一起使用

    /ab/i   可以匹配ab, 也可以匹配AB 或者 aB, Ab

    m

    1.在javascript中,置于正则表达式末尾,例如:var x=/abc/m, 或者作为RegExp的第2个参数, 例如:var x=new   RegExp("abc","m"); 表示匹配时,将字符串看作多行,每行结尾都有一个$。

    2.与g或i一起使用

    alert(/ab$/m.test("ab\r\nabc"))   将会弹出true, 而alert(/ab$/.test("ab\r\nabc")) 则是弹出false

    \

    1.作为转义符号

    2其后加数字表示后向引用

    3.其后加数字表示八进制数(当\后面的数字大于之前所能获取的匹配数目时)

    4.\   参与的转义字符

    (2).   \1 表示上一个被获取的匹配, aTa用/(\w)T\1/匹配时,\1表示(\w)中被匹配的a

    (3).   \777 表示匹配八进制数0777

     

     

  • 相关阅读:
    Java学习小记 16
    Java学习小记 15
    Java学习小记 14
    Java学习小记 13
    Java学习小记 12
    Java学习小记 11
    Java学习小记 10
    MySql 5.0 以上版本的varchar和text数据类型可以存的汉字个数
    java获取当前上一周、上一月、上一年的时间
    ArtifactsFilter ClassNotFoundException
  • 原文地址:https://www.cnblogs.com/shadowwalker/p/3001933.html
Copyright © 2020-2023  润新知