正则表达式(Regular Express)学习笔记

1 . 匹配任意单个字符      .(英文句号)     元字符

 1.1 . 多个点匹配多个任意字符
 1.2 . 如果你只想匹配.字符, 可以使用转义字符\.


2 . 匹配多个字符中的某一个      []     元字符

 2.1 . eg:[ns]a     匹配na或者sa

 2.2 . 利用[]匹配字符区间     eg:      [A-Za-z0-9]

 2.3- (连字符)是一个特殊的字符,只能用在[]中表示连字符,在字符集合以外的地方,-只是一个普通的字符,并且不用被转义。

 2.4 . 字符区间只能从小到大


3 . 取非匹配     ^      元字符

 3.1 . 意思就是除了那个字符集合里的字符,其他字符都可以匹配

 3.2 . eg:[ns]a[^0-9]\\.xls      匹配nam.xls,不匹配sa8.xls


4 . 匹配特定的字符类

字符类字符类的含义等价的正则表达式
\d任何一个数字字符[0-9]
\D任何一个非数字字符[^0-9]
\w任何一个数字,字母或者下划线[a-zA-Z0-9_]
\W任何一个除了数字,字母和下划线的字符[^a-zA-Z0-9_]
\s任何一个空白字符[\f\n\r\t\v]
\S任何一个非空白字符`[^\f\n\r\t\v]`

     

注意:javascript不支持在正则表达式里使用POSIX字符类(eg [:alnum:]表示任意一个字母或数字)


5 . 匹配一个或多个字符      字符集后面跟上     +      元字符

  5.1 . 字符集合[]里使用像.+这样的元字符将被解释为普通字符,不需要被转义,但是转义了之后也没有什么坏处。

6 . 匹配零个或多个字符       字符集后面跟上     *      元字符

7 . 匹配零个或一个字符       字符集后面跟上           元字符


8 . 为重复次数设定一个精确的值      {\d}      (eg \d{6} 匹配一个六位的数字)      { }元字符

9 . 为重复匹配次数设定一个区间        {\d,\d}

10 . 匹配“至少重复多少次”      {\d,}

贪婪型元字符和懒惰型元字符(顾名思义,一个匹配尽可能多,另一个匹配尽可能少,懒惰型字符用于防止过度匹配。)

贪婪型元字符懒惰型元字符
*\*?
+\+?
{n, }{n, }?

11 . 位置匹配

 11.1 . 单词边界      \b     匹配前后有空格或者连字符的单词(单词可以是字母、数字或下划线)(eg:      \bcat\b     匹配cat-cat-,不匹配scattered

  11.1.1 . 非单词边界      \B      匹配前后有空格或者连字符的非单词(非单词可以是空格或者连字符)

 11.2 . 字符串边界

字符串边界字符串边界的含义举例举例解释
^用来确定字符串开头的位置^\s*< xml.*>匹配以< xml...>开头的字符串
$用来确定字符串结束的位置</[hH][tT][mM][lL]>\s*$  匹配以</html> 结束的字符串

     

 11.3 . 分行匹配模式       (?m)

  eg:      (?m)^\s*//.*$      匹配所有的位于单独行的注释


12 . 子表达式       ()


13 . 回溯引用匹配       \\d       要配合子表达式()使用,其中\d表示RE中第\d个子表达式

(javascript用$代替\,即$\d)      \d表示任意数字

eg:

<[hH][1-6]>.*?</[hH][1-6]> // 可能会匹配<h2>...</h3>

<[hH]([1-6])>.*?</[hH]\1> // 回溯引用 \1匹配第一个子表达式,即和[1-6]相同的部分,JS的表示形式为<[hH]([1-6])>.*?</[hH]$1>


14 . 前后查找       用于匹配正确的位置,但正则表达式的某些部分并不是匹配结果的一部分,不用返回。(常见的正则表达式都支持向前查找,但是支持向后查找的没有那么多。Java,.NET,PHP,Perl都支持向后查找(但是有一些限制),JavaScript,ColdFusion都不支持向后查找。)

前后查找类型前后查找类型的表达式示例示例解释
向前查找(?=).+(?=:)匹配:之前的字符,但不包括:
向后查找(?<=)(?<=\$)[0-9]+匹配$之后的字符,但不包括$
负向后查找(?<!)\b(?<!\$)[0-9]+\beg:I paid $30 for 100 apples. 匹配100,不匹配$30中的30。
负向后查找(?!)

15 . 嵌入条件
 15.1 . 回馈引用条件      (?(backreference)true-regex|false-regex)      其中backreferrence是回馈引用

eg: (<[aA]\s+[^>]+>\s*)?<[iI][mM][gG]\s+[^>]+>(?(1)\s*</[aA]>)

匹配单独的<img...>标签或者被括在<a...></a>之间的整个链接标签。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值