what is String.prototype.match()

2016-09-10  本文已影响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属性的
上一篇下一篇

猜你喜欢

热点阅读