• 正则表达式基础


    先上文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions;

    正则历史:维基百科;

    接下来由很浅入浅来分类学习正则基础:

    元字符

    常用元字符 含义
    . 匹配除换行符以外的任意字符
    w 匹配字母或数字或下划线
    W 匹配不是字母、数字、下划线的字符
    d 匹配数字,相当于[0-9]
    D 匹配不是数字的字符
    s 匹配任意不可见的字符,包括空格、制表符、换行符等
    S 匹配任意可见字符
    ^ 匹配字符串开始位置
    $ 匹配字符串结束位置
    转义字符. 在非特殊字符之前的反斜杠表示下一个字符是特殊的,不能从字面上解释。相反,反斜杠也可以将其后的特殊字符,转义为字面量。

    量词

    常用量词 含义
    * 重复任意次, 相当于{0,}
    ? 重复0次或者1次, 相当于{0, 1}
    + 重复1次或者更多次,相当于{1,}
    {n} 重复n次
    {n,} 重复n次或者大于n次
    {n, m} 重复n到m次

    分支&字符集

    常用字符 含义
    x y
    [abc] 一个字符集合, 匹配方括号的中任意字符. [abc] == [a-c]
    [^abc] 一个反向字符集, 匹配任何没有包含在方括号中的字符. [^abc] == [^a-c]

    零宽断言 (lookaround assertions)

    • 也翻译成环视
    • 根据方向的不同,分为lookahead和lookbehind
    • 根据判断原则,分为肯定和否定。
    正向/预测现行/顺序
    从左到右/pattern的前面位置
    负向/回顾后发/逆序
    从右到左/pattern的后面位置
    肯定/正 (?=pattern) (?<=pattern)
    否定/负 (?!pattern) (?<!pattern)

    惰性&贪婪

    • 贪婪模式——在匹配成功的前提下,尽可能多的去匹配
    • 惰性模式——在匹配成功的前提下,尽可能少的去匹配
    • /.*bbb/g.test('abbbaabbbaaabbb1234')
    • /.*?bbb/g.test('abbbaabbbaaabbb1234')
    • 贪婪模式⽤用于匹配优先量量词修饰的⼦子表达式
    • 惰性模式⽤用于匹配忽略略优先量量词修饰⼦子表达式

    修饰符&标志

    标志 描述
    g → global 全局搜索
    i → ignoreCase 不区分大小写搜索
    m → multiline 多行搜索
    y → sticky 执行“粘性”搜索,匹配从目标字符串的当前位置开始
    u → unicode 表示按unicode(utf-8)匹配(主要针对汉字)
    s → dotAll 将字符串视为单行来匹配

    使用方法

    方法 描述
    exec 一个在字符串中执行查找匹配的RegExp方法,它返回一个数组(未匹配到则返回null)。
    test 一个在字符串中测试是否匹配的RegExp方法,它返回true或false。
    match 一个在字符串中执行查找匹配的String方法,它返回一个数组或者在未匹配到时返回null。
    search 一个在字符串中测试匹配的String方法,它返回匹配到的位置索引,或者在失败时返回-1。
    replace 一个在字符串中执行查找匹配的String方法,并且使用替换字符串替换掉匹配到的子字符串。
    split 一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的String方法。

    例:

    var myRe = /d(b+)d/g;
    var myArray = myRe.exec("cdbbdbsbz");
    
    
    var myRe = /d(b+)d/g;
    var myArray = myRe.test("cdbbdbsbz");
    
    
    var re = /w+s/g;
    var str = "fee fi fo fum";
    var myArray = str.match(re);
    
    var re = /w+s/g;
    var str = "fee fi fo fum";
    var myArray = str.match(re);
    console.log(myArray);  // ["fee ", "fi ", "fo "]
    
    var re = /(w+)s(w+)/;
    var str = "John Smith";
    var newstr = str.replace(re, "$2, $1");
    console.log(newstr);   //  "Smith, John"
    
    var names = "Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ; Chris Hand ";
    var pattern = /s*;s*/;
    var nameList = names.split(pattern);
    
  • 相关阅读:
    这里下载QT速度飞快QT下载(多种下载通道+所有版本)
    一个查找窗口和子窗口的MFC类
    office 2007 安装和激活
    kafaka安装和使用及分析
    flume安装和使用
    Hbase的使用和分析
    Nginx源码安装
    hadoop集群下安装hive
    hadoop集群(完全分布式)下hbase的安装和配置
    linux下时区设置和时间同步
  • 原文地址:https://www.cnblogs.com/arissy/p/10046284.html
Copyright © 2020-2023  润新知