0

给定一个包含多个由空格分隔的字符串的字符串,我试图找到以“dtl-”开头的字符串,然后只返回“dtl-”之后的匹配单词部分(在这种情况下它们是数字)

例如,如果字符串是:

class = "odd dtl-78634 blue active";

然后我需要返回:

"78634"

当我使用以下代码时:

var id = class.match(/dtl-(\d+)/);

id 将是一个包含两个值的数组:“dtl-78634”和“78634”

我可以使用 id[1] 来保存我想要的值,但我的问题是:

1) 为什么我会收到两场不同的比赛?一个包括我所说的“签名”(在本例中为“dtl-”),另一个不包括签名。

2) 正则表达式中是否有办法专门生成两种类型的返回匹配中的一种?

谢谢你。

4

2 回答 2

1

id[0] 将包含与完整模式匹配的文本,id[1] 将包含与第一个捕获的字符串匹配的文本。

于 2013-08-20T17:38:35.457 回答
0

它不应该那么困难。而且我认为您不需要正则表达式来执行此操作。简单的拆分将为您完成这项工作。

考虑一个简单的逻辑。首先使用拆分变量-,然后使用empty space这样的拆分:

var idT = "odd dtl-78634 blue active";
var arrayIDT = idT.split("-");
console.log(arrayIDT[1]);
var id = arrayIDT[1].split(" ");
console.log(id[0]);

在这里找到工作小提琴:http: //jsfiddle.net/FXhLx/

于 2013-08-20T17:44:43.153 回答