zoukankan      html  css  js  c++  java
  • 正则表达式总结

    在JavaScript中用正则表达式是最常见不过了,正则看起来像天书,理解了之后其实不难,下面我将总结一下各种正则字符的意思。客官请慢用:

    元字符

    符号 含义
     元字符,代表单词的开头或结尾,也就是单词的分界处,不匹配任意一个字符,只匹配一个位置
    . 元字符,匹配除了换行符以外的任意字符
    * 可以连续重复使用任意次
    w 匹配字母或数字或下划线
    s 匹配空格符
    d 匹配数字
    ^ 匹配字符串开始
    $ 匹配字符串结束

    重复

    符号 含义
    * 重复0次或多次
    + 重复1次或多次
    ? 重复0次或1次
    {n} 重复N次
    {n, } 重复N次或更多次
    {n, m} 重复n到m次

    字符类

    符号 含义
    [] 匹配[]中的任意一个字符

    例子:匹配(010)88886666022-2233445502912345678,
    正则表达式: /(?0d{2}[-)]?d{8}/

    分支条件

    上述表达式中也能匹配010)12345678(022-87654321这样的“不正确”的格式。要解决这个问题要用到分支条件。所以上述的正则表达式可以改写为/(?0d{2})[-]?d{8}|0d{2}[-]?d{8}/

    符号 含义
    | 匹配|的左右两边的条件,任意一个符合就匹配

    分组

    重复多个字符时,可以使用()来表示。比如:(d{1,3}.){3}d{1,3}是一个简单的IP地址匹配。
    然而像256.300.888.999这种不可能存在的IP地址。所以我们改写一下,一个正确的IP地址正则表达式应该是/((2[0-4]d|25[0-5]|[01]?d?d).){3}(2[0-4]d|25[0-5]|[01]?d?d)/

    反义

    符号 含义
    W 匹配任意不是字母,数字,下划线,汉字的字符
    S 匹配任意不是空白符的字符
    D 匹配任意非数字的字符
    B 匹配不是单词开头或结束的位置
    [^x] 匹配除了x以外的任意字符
    [^aeiou] 匹配除了aeiou这几个字母以外的任意字符

    后向引用

    使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是捕获的内容)。默认情况下,每个分组会自动拥有一个组号,规则是:从左往右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推

    符号 含义
    1 2 3 ... 表示匹配第N个出现的捕获组
    k<Word> 自定义捕获组
    (?:exp) 表示匹配exp,但不捕获匹配的文本,也不给此分组分配组号

    (这里面的性质JavaScript暂不支持)也可以指定子表达式的组名。比如:<Word>w+要引用这个自定义的子表达式可以用k<Word>

    零宽断言

    用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像,^,$那样用于指定一个位置,这个位置应该满足一定的条件(断言),因此它们也被称为零宽断言

    符号 含义
    (?=exp) 也叫零宽度正预测先行断言,匹配符合exp的前面的正则的内容。比如w+(?=ing),匹配以ing结尾的单词的前面部分(除了ing以外的w+部分),如查找I'm singing while you're dancing.时,它会匹配sing和danc。
    (?<=exp) 也叫零宽度正回顾后发断言,它的作用与(?=exp)相反,匹配符合exp之后的正则的内容。比如(?<=re)w+会匹配以re开头的单词的后半部分(除了re以外的部分),例如在查找reading a book时,他会匹配ading。(这里面的性质JavaScript暂不支持)

    负向零宽断言

    符号 含义
    (?!exp) 也叫零宽度负预测先行断言,断言此位置的后面不能匹配表达式exp。例如:d{3}(?!d)匹配三位数字,而且这三位数字的后面不能是数字。
    (?<!exp) 也叫零宽度负回顾后发断言,与上面的(?!exp)含义相反,表示断言此位置的前面不能匹配表达式exp。例如:(?<![a-z])d{7}匹配前面不是小写字母的七位数字(这里面的性质JavaScript暂不支持)

    参考链接:

  • 相关阅读:
    第十三周助教总结
    C语言I博客作业09
    第十二周助教总结
    C语言I博客作业08
    第十一周助教总结
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言I作业07
    C语言I作业06
  • 原文地址:https://www.cnblogs.com/haiku/p/7192517.html
Copyright © 2011-2022 走看看