正则表达式-基本概要

分类 正则说明
特殊符号\作为转义符或8进制数起始标记
| 或运算符,如(x|y)表示x或y.与[xy]存在混淆的地方.如car|t匹配car或t,而ca[rt]匹配car或cat.
^匹配待测字符段行首.如果设置了RegExp对象的Multiline属性,^也会匹配\n或\r之后的位置,即每一单独行首.
$匹配待测字符段行尾.如果设置了RegExp对象的Multiline属性,$也匹配\n或\r之前的位置,即每一行单独行尾.
?当该字符紧跟在任何一个量词(*,+,?,{n},{n,},{n,m})后面时,匹配模式转换为非贪婪(懒惰)模式.非贪婪模式指在匹配过程中尽可能少的匹配所搜索的字符串,等价于str{0,1}.而默认的贪婪模式则会尽可能多的匹配所搜索的字符串,等价于str{1,}.
.匹配除换行符之外的任何单个字符.
量词*量词,匹配前面的子表达式任意次.*等价于str{0,}
?量词,匹配前面的子表达式零次或一次.?等价于str{0,1}
{n}量词,n是一个非负整数,要匹配n次子表达式.str{n}表示连续的n个str.
{n,m}量词,m和n均为非负整数,其中n<=m.最少匹配n次且最多匹配m次.str{n,m}表示连续的n或m个str.
分组 (pattern) ()是分组,(str)内的str是一个整体,与[str]所代表的字符集合不同.括号前没有加任何类似?=的修饰符则是获取匹配,匹配str并将匹配到的内容存储到Matches集合中,最大可存储9个.匹配到的每个结果都有一个从1开始到9的数字标识.可通过\num在后面的RegExp表达式中引用这个匹配结果.
获取匹配(?:pattern)非获取匹配,匹配str但不存储匹配结果.(?:pattern)还可用于组合字符,例如industr(?:y|ies)就可以替代industry|industries,这与industr[y(?:ies)]是等价的.
(?=pattern)非获取匹配,具有肯定前瞻效应.前瞻实际上是正则里的一种修饰符,表示前面字符应为...的子串.如\w*c(?=d)匹配"abcde"结果为abc,\w*c(?=e)匹配"abcde"则匹配失败.前瞻不消耗字符,它仅仅是对字符的一种修饰,不是正则里的待匹配子串.
(?!pattern)非获取匹配,具有否定前瞻效应.与(?=pattern)相反,(?!pattern)表示前面字符应不为...的子串.如\w*c(?!d)匹配"abcde"则匹配失败.
(?<=pattern)非获取匹配,具有肯定后顾效应.(?<=pattern)表示后面字符应为...的子串.
(?<!pattern)非获取匹配,具有否定后顾效应.(?<!str)表示后面字符应不为...的子串.
方括号集合[xyz]集合,它就像是一条变色龙,匹配时可以将它看做是[...]里的任一字符.如\w本质上就是[1-9a-zA-Z].
[^xyz]负值集合,匹配时可以将它看做是除[...]里的所有字符外的任一字符.如[^a-z]匹配除小写字母外的任意字符.
[a-z]字符范围式集合.可表示指定范围内的任意字符.连字符-只有出现在两个字符之间时才可以被视作范围分组,否则只是表示字符"-".
元字符\b匹配一个单词边界,单词边界指的是单词和空格间的界限位置,即待匹配单词与另外的单词间存在空格间隙.如er\b可以匹配"never"中的"er",但不能匹配"verb"中的"er".
\B匹配非单词边界,即待匹配单词旁边又是一个单词,两者之间没有空格间隙.er\B能匹配"verb"中的"er",但不能匹配"never"中的"er".
\d匹配一个阿拉伯数字字符.等价于[0-9].
\D匹配一个非数字字符.等价于[^0-9].
\f匹配一个换页符.等价于\x0c和\cL.
\n匹配一个换行符.等价于\x0a和\cJ.
\r匹配一个回车符.等价于\x0d和\cM.
\s匹配任何不可见字符,包括空格,制表符,换页符等.等价于[\f\n\r\t\v].
\S匹配任何可见字符.等价于[^\f\n\r\t\v].
\t匹配一个制表符.等价于\x09和\cI.
\v匹配一个垂直制表符.等价于\x0b和\cK.
\w匹配包括下划线在内的任何单词字符.类似但不等价于[A-Za-z0-9_],这里的"单词"字符指的是使用Unicode字符集后所能表示的单词字符.
\W匹配任何非单词字符.等价于[^A-Za-z0-9_].
\cx匹配由x指明的控制字符.如\cM匹配Control+M即\r,\cI匹配control+I即\t,\cJ匹配control+J即\n.x的值必须为[A-Z]或[a-z]之一.否则c将被视为一个原义的"c"字符.
\xn匹配\xn表示的十六进制转义值.其中,n必须为确定的两个数字长.如\x41匹配"A"."\x041"则等价于"\x04&1".
*注:16进制转义与8进制转义要注意区分开.
\numnum是一个1-99的正整数,\num是对获取匹配中Matches集合存储的匹配结果的引用.由于只对后面已匹配过的结果作引用,故也称为向后引用.
\n标识一个八进制转义值或作为一个向后引用.如果\n之前Matches集合获取了至少n个匹配结果,则n为向后引用.否则,如果n为八进制数字(0-7),则n为一个八进制转义值.
\nm标识一个八进制转义值或一个向后引用.如果\nm之前Matches集合获取了至少nm个匹配结果,则nm为向后引用.否则如果\nm之前前Matches集合获取了至少n个匹配结果,则n为一个后跟数字m的向后引用.如果前面的条件都不满足,若n和m均为八进制数字(0-7),则\nm将匹配八进制转义值nm.
\nml如果n为八进制数字(0-7),且m和l均为八进制数字(0-7),则表示匹配八进制转义值nml.
\un匹配n所表示的Unicode字符,其中n是四个十六进制数.如\u00A9匹配版权符号(©).
*注:某些正则匹配支持ASCII字符表示.
\p{P}中括号内的"P"表示Unicode 字符集字符属性propety之一.
       L:字母;
    M:标记符号(一般不单独出现);
    Z:分隔符(如空格,换行等);
    S:符号(如数学符号,货币符号等);
    N:数字(如阿拉伯数字,罗马数字等);
       C:其他字符. *注:此语法部分语言不支持,如javascript.
其他\<"word"\>匹配单词"word"的开始(\<)和结束(\>).如正则表达式\
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值