javascript - 仅获取匹配项,而不是整个条目

标签 javascript arrays regex

this thread的帮助下我得到了以下代码,它查找所有出现的至少 3 个字母的单词:

arr = ["ab", "abcdef", "ab test"]

var AcceptedItems = arr.filter(function(item) {
    return item.match(/[a-zA-Z]{3,}/);
});

就我而言,应该是 abcdeftest

但它不仅仅获取了出现的次数,还获取了数组的整个条目。因此,我得到的不仅仅是 test,而是 ab test

如何才能只获取匹配项(test),而不是整个数组条目。

最佳答案

如果

.filter 会保留一个与您传递的谓词匹配的元素,但您需要根据该谓词是否为 true 来保存一个新值。您可以通过首先执行 map 然后执行 filter 来完成此操作,但我宁愿在一个循环中执行此操作。

var AcceptedItems = [];
for (var i = 0, len = arr.length; i < len; i++) {
  var match = arr[i].match(/[a-zA-Z]{3,}/);
  if (match) {
    AcceptedItems.push(match[0]);
  }
}

关于javascript - 仅获取匹配项,而不是整个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35470013/

相关文章:

python - 使用 finditer 后如何从正则表达式匹配对象中获取匹配的单词

javascript - 当我使用 equalHeights jQuery 插件时,IE8 返回 “object doesn' t support this property or method”

javascript - 如何使用 Javascript/Jquery 解析多级 json

javascript - JS 中数据的转义

Javascript 隐藏/显示类问题

sql - 来自两个有序数组的单个更新查询

c# - 如何用 `someObject.ToString()` 替换所有出现的 `Convert.ToString(someObject);`

JavaScript 匹配任何字母字符

c语言移动指针后如何释放它

JavaScript 切片不工作