概述
当字符串匹配到正则表达式(regular expression)时,match()
方法会提取匹配项。
语法
str.match(regexp);
参数
-
regexp
-
一个正则表达式对象。如果传入一个非正则表达式对象,则会隐式地使用
new RegExp(obj)
将其转换为正则表达式对象。
返回值
-
array
-
一个包含匹配结果的数组,如果没有匹配项,则返回
null
。
描述
如果正则表达式没有 g
标志,返回和 RegExp.exec(str)
相同的结果。而且返回的数组拥有一个额外的 input
属性,该属性包含原始字符串。另外,还拥有一个 index
属性,该属性表示匹配结果在原字符串中的索引(以0开始)。
如果正则表达式包含 g
标志,则该方法返回一个包含所有匹配结果的数组。如果没有匹配到,则返回 null
。
参看:RegExp
方法
- 如果你需要知道一个字符串是否匹配一个正则表达式(
RegExp
),可使用RegExp.test(str)
。 - 如果你只是需要第一个匹配结果,你可能想要使用
RegExp.exec(str)
。
示例
例子:使用 match
在下例中,使用 match
查找 "Chapter
" 紧跟着 1 个或多个数值字符,再紧跟着一个小数点和数值字符 0 次或多次。正则表达式包含 i
标志,因此大小写会被忽略。
var str = "For more information, see Chapter 3.4.5.1"; var re = /(chapter \d+(\.\d)*)/i; var found = str.match(re); console.log(found); // logs ["Chapter 3.4.5.1", "Chapter 3.4.5.1", ".1"] // "Chapter 3.4.5.1
" is the first match and the first value // remembered from(Chapter \d+(\.\d)*)
. // ".1
" is the last value remembered from(\.\d)
.
例子:match
使用全局(global)和忽略大小写(ignore case)标志
下例展示了 match
使用 global 和 ignore case 标志。A-E、a-e 的所有字母将会作为一个数组的元素返回。
var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
var regexp = /[A-E]/gi;
var matches_array = str.match(regexp);
console.log(matches_array);
// ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']
规范
Specification | Status | Comment |
---|---|---|
ECMAScript 3rd Edition. | Standard | Initial definition. Implemented in JavaScript 1.2 |
ECMAScript 5.1 (ECMA-262) String.prototype.match |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) String.prototype.match |
Standard |
浏览器兼容性
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |