在JavaScript中,给定正则表达式模式和字符串:
var pattern = '/this/[0-9a-zA-Z]+/that/[0-9a-zA-Z]+';
var str = '/this/12/that/34';
如何返回包含以下内容的数组:
['12', '34']
以下匹配整个输入字符串,因此将其作为整体返回。
var res1 = '/this/12/that/34'.match(/\/this\/[0-9a-zA-Z]+\/that\/[0-9a-zA-Z]+/));
以下内容匹配输入字符串的所有“部分”。
var res2 = '/this/12/that/34'.match(/[0-9a-zA-Z]+/g));
答案 0 :(得分:2)
使用捕获组:
var res1 = '/this/12/that/34'.match(/\/this\/([0-9a-zA-Z]+)\/that\/([0-9a-zA-Z]+)/);
您将获得一个包含3个元素的数组:
整场比赛;
12
34
您可以使用.slice(1)
删除第一个元素:
var res1 = '/this/12/that/34'.match(/\/this\/([0-9a-zA-Z]+)\/that\/([0-9a-zA-Z]+)/).slice(1);
答案 1 :(得分:2)
在Regex中,您可以使用括号来分隔“捕获组”。然后可以从您的比赛中检索这些内容。还应该注意的是,正则表达式是JavaScript中的文字,你不能在它们周围加上引号(而是使用斜杠),你必须正确地转义。
例如,如果您使用此正则表达式:
var pattern = /\/this\/([0-9a-z]+)\/that\/([0-9a-z]+)/i;
// that final "i" avoids the need to specify A-Z, it makes the regex ignore case
现在,当你将它与你的字符串匹配时:
var match = str.match(pattern);
您的结果将如下所示:
["/this/12/that/34","12","34"]
请注意,数组的第一个索引始终是您的整个匹配项。您可以使用.shift
将其分割:
match.shift();
现在match
看起来像:
["12","34"]