本质是什么:获取你想要找到的字符串
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属性的
网友评论