正则表达式.exec到数组

时间:2013-07-30 05:45:17

标签: javascript regex

我想在字符串中捕获一些值,然后将它们返回到页面。这是代码的一个例子。据我所知,.exec应该将它匹配的值存储到数组中吗? 这应该归还Savage,Betsy。有人可以告诉我什么是错的吗?

var regex = /\b(Betsy)(Savage)\b/i;

var string = "My friend is Betsy Ann Savage";

var arrayMatch = null;

while(arrayMatch = regex.exec(string)){
   document.getElementById("text").innerHTML = arrayMatch[1] + ", " + arrayMatch[0];
}

2 个答案:

答案 0 :(得分:2)

你没有得到这样的任何比赛。您可以在(Betsy)和(Savage)之间添加。* ...

答案 1 :(得分:0)

听起来你认为\b(Besty)(Savage)\b会匹配EITHER Best,或者Savage,但事实并非如此。它正在寻找两个部分组合在一起的字符串 - 您也可以尝试匹配\b(BetsySavage)\b。这是因为有一段时间,你确实有两个由parentasis分隔的组,你将它们直接放在一起,所以Regex引擎说'好吧',我会找到彼此相邻的两个。我认为你真正想做的是使用代表OR的|。与\b(Besty|Savage)\b中一样。