JavaScript正则表达式

作者: _于易 | 来源:发表于2017-12-07 20:19 被阅读37次

    创建

    js里创建正则对象有两种方法

    1. 字面量/pattren/flags
    2. 构造函数 new RegExp(pattren [,flags])
    • pattern:正则表达式的文本
    • flags:若指定,标志可以具有以下值的任意组合:
    g:全局匹配
    i:忽略大小写
    m:多行匹配
    u:Unicode; 将模式视为Unicode序列点的序列
    y:粘性匹配; 仅匹配目标字符串中此正则表达式的lastIndex属性指示的索引(并且不尝试从任何后续的索引匹配)。
    

    元字符

    在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符。

    ( [ { \ ^ $ | ) ? * + .

    字符类

    一般情况下正则表达式一个字符(转义字符算一个)对应字符串一个字符,但我们可以使用元字符[]来构建一个简单的类, 比如[abcd]代表一个字符,这个字符可以是abcd四个字符中的任意一个。

    取反

    元字符[]组合可以创建一个类,我们还可以使用元字符^创建反向类/负向类,反向类的意思是不属于XXX类的内容,表达式[^abc]表示一个不是字符a或b或c的字符。

    范围类

    按照上面的说明如果希望匹配单个数字那么表达式是这样的

      //匹配一个字符,这个字符可以是0-9中的任意一个
        var reg1 = /[0123456789]/
    
      //匹配一个字符,这个字符可以是0-9中的任意一个
        var reg2 = /[0-9]/
    
      //匹配一个字符,这个字符可以是a-z中的任意一个
        var reg3 = /[a-z]/
    
      //匹配一个字符,这个字符可以是大写字母、小写字母、数字中的任意一个
        var reg3 = /[a-zA-Z0-9]/
    

    预定义类

    字符 等价类 含义
    . [^\r\n] 除了回车符和换行符之外的所有字符
    \d [0-9] 数字字符
    \D [^0-9] 非数字字符
    \s [\t\n\x0B\f\r] 空白符
    \S [^\t\n\x0B\f\r] 非空白符
    \w [a-zA-Z_0-9] 单词字符,字母、数字下划线
    \W [^a-zA-Z_0-9] 非单词字符

    有了这些预定义类,写一些正则就很方便了,比如我们希望匹配一个可以是 ab+数字+任意字符 的字符串,就可以这样写了 /ab\d./

    分组

    有时候我们希望使用量词的时候匹配多个字符,而不是像上面例子只是匹配一个,比如希望匹配Byron出现20次的字符串,我们如果写成 Byron{10}的话匹配的是hunge+r出现10次。
    怎么把Byron作为一个整体呢?使用()就可以达到此目的,我们称为分组:

        /(Byron){10}/
    

    或用|来表示

    var reg1 = /hello|world/ 
    //等同于
    var reg2 = /(hello)|(world)/
    

    量词

    如果我们希望匹配一个连续出现20次数字的字符串我们不需要写成这样:
    \d\d\d\d...
    为此正则表达式引入了一些量词

    字符 含义
    ? 出现零次或一次(最多出现一次)
    + 出现一次或多次(至少出现一次)
    * 出现零次或多次(任意次)
    {n} 出现n次
    {n,m} 出现n到m次
    {n,} 至少出现n次

    边界

    正则表达式还提供了几个常用的边界匹配字符

    字符 含义
    ^ 以xxx开头
    $ 以xxx结尾
    \b 单词边界 指[a-zA-Z_0-9]之外的字符
    \B 非单词边界

    司徒正美 javascript正则表达式

    相关文章

      网友评论

        本文标题:JavaScript正则表达式

        本文链接:https://www.haomeiwen.com/subject/rtjjixtx.html