• 正则冷知识;分组捕获、replace()的用法...


    1.var reg=/./; var reg=/./的区别??

    前者代表任意一个字符,后者代表这个字符串中得有一个.。

    2.?的使用??

    如果单独的一个字符串后面带? ,

    var reg=/d?/  ;  /n?/  ;   d?代表的意思是至少有0个和1个数字 ; n ? 代表0个或1个带n的字符  。

    如果是量词+和x ,n{x}后带? 则会取消正则的贪婪性 

    var reg=/d+?/  ;

    var st="123hello"

    console.log(reg.exec(st))

    3.捕获

    (1)普通捕获 exec()  match()

      普通捕获有懒惰性,给正则添加一个修饰符g可以解决,match()是将所有捕获的内容放在一个数组中并返回,match()就是对exec()的封装

    (2)分组捕获  exec()  match()

      var reg=/(a)(b)/;

      exec()和match()在非全局捕获下捕获到的是一样的,不仅捕获到大正则的内容,也捕获到分组内容;

      exec()和match()在全局捕获下捕获到的是不一样的,exec()捕获到的是大正则和小分组,而match()捕获到的只有大正则

    (3)分组捕获的优势 ???

      a:可以提升优先级  b:可以捕获引用

      1代表与分组1中一样的内容     2代表与分组2中一样的内容

      分组的结果存在正则类RegExp的$number的属性下

      1与RegExp.$1都是分组引用

      1只能在正则表达式中使用,RegExp.$1可以在外面使用,且二者都是在捕获完成的条件下使用

    (4)在捕获过程中怎样取消捕获分组中的内容???

      在那个分组前加?:

      var reg=/a(?:b)/;

      var st="ab";

      console.log(reg.exec(st))

    4.replace()字符串的方法,用于替换,两个参数,第一个参数是被替换的,第二个参数是替换他的,返回值是替换它的新字符串,但是并没有改变原来的字符串

    (1)如果第一个值是字符串的话,只改变一次;

    (2)如果第一个值是正则的话,捕获一次改变一次;

    (3)如果第二个参数是匿名函数,每捕获一次这个匿名函数都会执行一次,return的是什么,就替换成什么,这个匿名函数的arguments有三个元素 a:被替换的元素;b:索引; c:原字符串

  • 相关阅读:
    2017.11.20 定时器与数码管
    2017.11.19 C语言基础及流水灯实现
    libcmtd.lib(exe_wwinmain.obj) : error LNK2001: 无法解析的外部符号 _wWinMain@16
    VCatlmfcincludeafx.h(24): fatal error C1189: #error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
    VS2015解决 error C4996: 'strdup': The POSIX name for this item is deprecated.
    vs2015单元测试
    pkg-config的一些用法
    CMake快速入门
    CMake入门教程
    Ubuntu16.04下安装NVIDIA显卡驱动
  • 原文地址:https://www.cnblogs.com/qinlinkun/p/10155653.html
Copyright © 2020-2023  润新知