1

我想在字符串中捕获一些值,然后将它们返回到页面。这是代码的示例。据我了解, .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];
}
4

2 回答 2

2

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

于 2013-07-30T05:51:01.827 回答
0

听起来您认为\b(Besty)(Savage)\b会匹配 Besty 或 Savage,但事实并非如此。它正在寻找一个将两个部分组合在一起的字符串 - 您不妨尝试匹配\b(BetsySavage)\b. 这是因为有一段时间,是的,你确实有两个组,它们被父辈分开,你让它们直接相邻,所以正则表达式引擎说,“好的”,我会寻找两个相邻的组。我认为您真正想要做的是使用|代表 OR。如\b(Besty|Savage)\b.

于 2013-07-30T05:50:55.507 回答