美文网首页
what is String.prototype.match()

what is String.prototype.match()

作者: 自然与大象吧 | 来源:发表于2016-09-10 17:11 被阅读0次

    本质是什么:获取你想要找到的字符串

    explain:

        The match() method retrieves the matches when matching string    
        against a regular expression
        通过正则表达式来匹配一个字符串时,这个方法会提取匹配项。
    

    这是它的原则

    syntax:

        match(regexp);
    

    参数

      regexp
      A regular expression object.if non-RegExp Object obj is passed,
      it is implicitly converted to  a RegExp by using new RegExp(obj)   
      意思是说来什么数据类型的值我都收了你,然后变成我自己的正则表达式了
    
     new RegExp(2);// 结果: /2/
     new RegExp('hello');//  结果: /hello/
     new RegExp(true);//  结果: /true/
     new RegExp(null);// 结果:  /null/
     new RegExp(undefined);// 结果: /(?:)/
     new RegExp({age: 1}); //  结果:  /[object Object]/
     new RegExp([]); //  结果: /(?:)/
     new RegExp([1,2]);// 结果: /1,2/
     new RegExp(function say(){}); //结果: /function say(){}/ 这么写代码不易 维护
    还有很多特殊例子。。。。
    这么写是告诉自己知识是可以很好的结合的,不要只想到一种比如第一种
    

    返回值

    An Array containing the entire match result and any parentheses-captured matched results; 
    null if there were no matches.
    就是说匹配到结果会返回一个数组,如果没有匹配到返回null
    

    描述

    如果正则表达式没有包括g这个标记,那么返回的结果是跟RegExp.exec()
    函数一样的结果。这个返回的数组额外多了一个input的属性,它可以解析出
    整个原字符串。另外也多了一个index属性,代表字符串基于0索引的匹配。
    //上代码
    var str = 'For more information , see Chapter 3.4.5.1';
    var newArray = str.match(/ion/);
    newArray.input;//'For more information, see Chapter 3.4.5.1';
    newArray.index;//17
    
    如果正则表达式有这个g标志位呀,那可就厉害了,不止匹配一次哦,出现了一样样的都归入我门下。
    var arr = str.match(/or/g);//输出arr结果是["or", "or", "or"];
    arr.index;//undefined 没有了这个额外的属性了
    arr.input;//undefined 也没有了 不能两全其美
    

    example

    使用match()

    var str = 'For more information, see Chapter 3.4.5.1';
    var re = /see (Chapter \d+(\.\d)*)/i;//有点像莫尔斯编码有特殊的文字表示
    var found = str.match(re);//["see Chapter 3.4.5.1","Chapter 3.4.5.1",".1"];
    found.index;//22
    found.input;//'For more information, see Chapter 3.4.5.1';
    

    match使用全局和忽略大小写的标志

    var str = 'ABCDEFGHIGKLMNOPQRSTUVWSYZabcdefghijklnmopqrstuvwsyz';
    var re = /[A-E]/gi;
    str.match(re);//["A","B","C","D","E","a","b","c","d","e"]
    //当然是没有input,index属性的
    

    相关文章

      网友评论

          本文标题:what is String.prototype.match()

          本文链接:https://www.haomeiwen.com/subject/odyyettx.html