• String对象的match方法


    RegExp对象的exec方法和String对象的match方法用法十分相似,分两篇博客讲讲其各自的用法和它们之间的异同。上一篇将exec方法的用法,这篇讲解match方法,并比较其异同。

    定义与语法

    【定义】

    match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

    【语法】 

    stringObject.match(searchvalue)
    stringObject.match(regexp)

    【返回值】存放匹配结果的数组。

    以下分3种情况讲解:

    1)输入参数为普通字符串;

    2)输入参数为非全局正则表达式;

    3)输入参数为全部正则表达式。

    输入为普通字符串

    var str="web2.0 .net2.0";
    var searchValue="e";
    console.log(str.match(searchValue));

    结果如下:

    image

    第一项:匹配到的字符串;

    属性index:匹配字符串所在的位置;

    属性input:输入的字符串

    其实,在输入参数为普通字符串时,match方法与indexOf方法的作用类似,只是indexOf返回的是匹配字符串所在的位置,match返回的是匹配的字符串(可以通过index属性获得位置)。但如果只是要获得匹配的字符串就没有意义了,因为结果就是输入参数,所以一般match更多地用于在字符串中匹配模式。

    输入为非全局RegExp对象

    var str="web2.0 .net2.0";
    var pattern=/(w+)(d).(d)/;//没有全局标志g
    console.log(str.match(pattern));

    结果如下:

    image

    如果看过上一篇文章exec方法的用法,会发现结果与exec方法的结果完全相同。即:

    第一项:web2.0,与整个模式匹配的结果,也就是与/(w+)(d).(d)/匹配的结果;

    第二项:web,与第一个匹配组匹配的结果,也就是与(w+)匹配的结果;

    第三项:2,与第二个匹配组匹配的结果,也就是与(d)匹配的结果;

    第四项:0,与第三个匹配组匹配的结果,也就是与(d)(第二个(d))匹配的结果;

    属性一:index:0,匹配项在字符串中的位置,也就是数组第一项的匹配字符串的位置。

    属性二:input:"web2.0 .net2.0",也就是输入参数str。

    所以,当输入参数为非全局正则表达式时,match方法与exec方法结果一样,均为第一个匹配项的信息(包括捕获组匹配到的子字符串)。

    输入为全局RegExp对象

    var str="web2.0 .net2.0";
    var pattern=/(w+)(d).(d)/g;//有全局标志g
    console.log(str.match(pattern));

    结果如下:

    image

    可以发现,结果包含两项,分别为第一个匹配项和第二个匹配项,不包括捕获组的匹配结果,也没有index和input属性。

    总结

    1)match方法为String对象的方法,输入参数可以为普通字符串或RegExp对象;

    2)输入为普通字符串时,结果为一个数组,包含第一个匹配到的字符串;数组有两个属性,分别为匹配字符串的位置index和输入参数input;

    3)输入为非全局RegExp对象时,结果为一个数组,包含第一个匹配项的信息,格式为[与整个模式匹配的字符串,与第一个捕获组匹配的字符串,与第二个捕获组匹配的字符串,……],数组有两个属性,分别为匹配得到的字符串的位置index和输入参数字符串input;

    4)输入为全局RegExp对象时,结果为一个数组,包含所有匹配的结果,但不包含捕获组匹配的子字符串、index属性和input属性。

    exec()和match()异同

    1)exec()为RegExp对象的方法,输入参数为字符串;match()为String对象的方法,输入参数为字符串或者RegExp对象;

    2)当RegExp对象没有全局标志g时,exec()和match()方法返回结果相同,为一个包含第一个匹配项的信息的数组,格式为[与整个模式匹配的字符串,与第一个捕获组匹配的字符串,与第二个捕获组匹配的字符串,……],数组有两个属性,分别为匹配得到的字符串的位置index和输入参数字符串input;

    3)当RegExp对象有全局标志g时,exec()方法每次执行时是从上次检索的终点开始检索,返回当前检索到的一个匹配项信息;match()方法执行的结果为一个包含所有匹配项的数组,不包括捕获组匹配的子字符串、index属性和input属性。

  • 相关阅读:
    iOS8及以后 地图定位当前城市
    UITextView换行问题解决办法
    使用七牛上传图片代码,导入文件常遇问题解决方法
    CocoaPods安装和使用
    Xcode7真机测试
    Label 添加表情图片
    TTTAttributedLabel使用介绍(转)
    带有中文的url和NSString中文的转换
    正则表达式的使用 选取有用数据
    导航网格配置笔记
  • 原文地址:https://www.cnblogs.com/youhong/p/6850722.html
Copyright © 2020-2023  润新知