Javascript 将Regex.exec放入数组

Javascript 将Regex.exec放入数组,javascript,regex,Javascript,Regex,我想捕获字符串中的一些值,然后将它们返回到页面。下面是一个代码示例。据我所知,.exec应该将匹配的值存储到数组中,对吗这应该是萨维奇的回报,贝齐。有人能告诉我怎么回事吗 var regex = /\b(Betsy)(Savage)\b/i; var string = "My friend is Betsy Ann Savage"; var arrayMatch = null; while(arrayMatch = regex.exec(string)){ document.getE

我想捕获字符串中的一些值,然后将它们返回到页面。下面是一个代码示例。据我所知,.exec应该将匹配的值存储到数组中,对吗这应该是萨维奇的回报,贝齐。有人能告诉我怎么回事吗

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];
}

听起来好像您认为
\b(Besty)(Savage)\b
将匹配Besty或Savage,但事实并非如此。它正在寻找一个字符串,其中两个部分是组合在一起的-您不妨尝试匹配
\b(BetsySavage)\b
。这是因为有一段时间是的,有两个组由parentasis分隔,它们直接挨着彼此,所以Regex引擎会说,‘好的’,我会在彼此旁边查找这两个组。我认为您真正想要做的是使用表示OR的
|
。正如在
\b(Besty | Savage)\b

中一样,您不会得到任何这样的匹配。您可以添加.*介于(贝西)和(萨维奇).

可能相关: