zoukankan      html  css  js  c++  java
  • 前端试题-正则中test, exec, match的区别

    test

    test 是正则表达式的方法,参数是字符串,返回的是布尔值(true或false),查找对应的字符串是否存在

    exec

    RegExpObject.exec(string)

    exec是正则表达式的方法,它的参数是字符串,查找并返回当前的匹配结果,并以数组的形式返回,如果没有匹配项,则返回null.

    exec() 返回的数组的第 0 个元素是与正则表达式相匹配的文本,第 1 个元素是与 RegExpObject 的第 1 个子表达式相匹配的文本(如果有的话),第 2 个元素是与 RegExpObject 的第 2 个子表达式相匹配的文本(如果有的话),以此类推。除此之外,它还返回index属性和input属性。

    非全局下的 exec(),返回的数组与调用match() 返回的数组是相同的。

    若全局(g),那么 match 一次返回所有的结果。而exec 则不同,它会在下次调用 exec 时,从上个匹配的 lastIndex 开始查找。这就是说,可以通过反复调用 exec() 来遍历字符串中的所有匹配文本。当 exec() 再也找不到匹配的文本时,它将返回 null,并把 lastIndex 属性重置为 0。

    注意:无论RegExpObject是否是全局模式,exec()都会把完整的细节添加到它返回的数组中。这就是exec()与String.match()的不同之处,后者在全局模式下返回的信息要少得多。

    match

    stringObject.match(regexp)

    match()方法将检索字符串stringObject,以找到一个或多个与regexp匹配的文本,它的参数是正则表达式,返回值跟exec一样是数组,如果没有匹配值,则返回null。

    match()方法比较信赖regexp是否具有全局标志g。

    如果没有g(非全局),那么它只在stringObject中执行一次匹配。该返回数组的第0个元素存放的是匹配文本,其余元素存放的是与正则表达式匹配的子表达式匹配的文本。除此之外,返回的数组还包含index属性和input属性。

    如果具有g(全局),则它执行全局检索,找到所有匹配子字符串。不过全局匹配返回的数组,它的的数组元素中存放的是stringObject中所有匹配子串,没有index属性或input属性。

    注意:在全局检索模式(g)下,match()即不提供与子表达式匹配的文本信息,也不声明每个匹配子串的位置。如果需要这样全局检索信息,可以使用RegExp.exec().

  • 相关阅读:
    使用docker部署Asp.net core web应用程序
    Docker 常用命令参考
    CentOS 系列安装 Docker
    在IIS上部署你的ASP.NET Core项目
    【POJ1742】Coins
    【CH5105】Cookies
    【NOIP2008】传纸条
    【CH5102】Mobile Service
    【CH1401】兔子与兔子
    【CH5101】LCIS
  • 原文地址:https://www.cnblogs.com/sunshinegirl-7/p/5191416.html
Copyright © 2011-2022 走看看