• 正则表达式的学习要点


    特性:

      1 在执行匹配时, 会按照匹配规则从前至后逐一匹配当前符串, 直到匹配成功或者到当前字符串的结尾。除非使用了^和$来限定字符串的开始和结尾 

      2 

    知识点:

    1. 字符类

       定义: 将任何单个字符直接量放进方括号内就组成了字符类

       特性:1 一个字符类可以匹配方括号内的任意字符  //  /[abc]/可以匹配任何包含abc的字符串

                  2 字符类只匹配一次, 匹配到了就继续后继的匹配 

        3 特殊符号: ^非方括号内的字符,  -字符表示字符范围 // /[^abc]/ /[0-9]/

     2. 重复

      定义: 使用花括号{}和特殊符号? + *来表示正则表达式中某个元素的重复次数

      用法: {n, m} 包含n次不包含m次, 左闭右开的区间

          {n} 匹配n次

          {n,} 匹配n到多次

           ? 0或1次

           + 1或多次

           * 1或多次

     3,  选择: 

      定义: 使用竖线符 | 来表示可供选择的字符,例如:/ab|cd|ef/可以匹配ab或cd或ef,不需要使用圆括号包裹匹配单元ab,因为他把ab当成独立单元,不会单独匹配a或b,而是会匹配ab。如果想加括号,可以加载足以外层,如:(/ab|cd|ef/) 

    4. 分组和引用

      定义: 1 分组: 使用圆括号()来把单项或多项元素组合成子表达式, 以便可以像操作单个单元那样处理它‘

          2引用: 使用圆括号来定义子模式,’见javascript权威指南P258页详解

    5. 指定位置

      定义: 正则表达式的锚点,表示匹配发生的合法位置

      特性: 1 ^ 匹配字符串的开头

          2. $ 匹配字符串的结尾

             3.  匹配单词的边界

           4. (?=p)要求接下来的字符必须要和p匹配, 但匹配的内容不包含匹配p的那些字符

           5. (?!p)要求接下来的字符必须不和p匹配

    6. 修饰符

        特性: i 执行不区分大小写的匹配

               g 全局匹配

            m 多行匹配

    7 例子

      1 匹配所有的正实数  var exp = /[1-9]+[.][0-9]+/;

      2. 匹配url参数

    var s = 'locahost:8080//users?name=tome&age=20&grade=3';
    
    var p = /??(w+)=(w+)&?/g;
    
    var r = s.replace(p, function(item, p1, p2) {
    
        console.log(item);
    
    });

     2. 匹配年月日获取年月日

    var p2 = /((d{2})-(d{2})-(d{2})) (S+) (+(S+))/;
    var a = ' 04-06-18 14:13:45 +08:00';
    
    var time = a.replace(p2, function(datestr, year, month, date, timestr, hour, minute, second) {
    
    console.log(datestr);
    console.log(year);
    console.log(month);
    console.log(date);
    console.log(timestr);
    console.log(hour);
    console.log(minute);
    console.log(second);
    
    });
  • 相关阅读:
    boost pool 和 object_pool
    boost::ref
    Source Insight设置
    windows7下硬盘安装ubuntu14.04
    POJ 2778 DNA Sequence (AC自己主动机 + dp)
    cocos2dx 运动+旋转动画 CCSequence CCAnimation CCAnimate CCMoveTo CCCallFuncN
    LeetCode 2 Add Two Numbers
    MySQL数据库导入外部*.sql文件具体步骤
    [ExtJS5学习笔记]第十节 Extjs5新增特性之ViewModel和DataBinding
    svn项目导入
  • 原文地址:https://www.cnblogs.com/nelson-hu/p/9110222.html
Copyright © 2020-2023  润新知