我试图将所有带有字母e的单词放在一个单独的数组中,但我不知道如何将变量输入到正则表达式中。
我已经尝试过将变量插入到正则表达式的元字符中。
var inputletter = "e"
startlist = ["jambee", "dangen", "oragna", "sabotta"];
filter1 = [];
var regex = new RegExp(startlist, "g");
for (var i = 0; i < startlist.length; i++) {
if(regex.test(regex, "regex") == true) {
filter1.push(startlist[i])
}
};
console.log(filter1);
答案 0 :(得分:0)
您可以使用数组过滤器功能,也可以使用includes
检查单词是否包含字符
var inputletter = "e"
startlist = ["jambee", "dangen", "oragna", "sabotta"];
function filter1(arr, char) {
return arr.filter(function(item) {
return item.includes(char)
})
}
console.log(filter1(startlist, inputletter));
答案 1 :(得分:0)
您使用的测试错误:
let regex = new RegExp("e");
...
if(regex.test(startlist[i])) {...
答案 2 :(得分:0)
如果您不介意不使用正则表达式,则可以使用Javascript的array.prototype.filter(),string.prototype.toLowerCase()和string.prototype.includes()方法来创建一个数组,其中每个元素至少具有一个'e'
let startlist = ["jambee", "dangen", "oragna", "sabotta"];
let result = startlist.filter((element) => element.toLowerCase().includes('e'));
console.log(result);
答案 3 :(得分:0)
如果要保留现有代码,只需要针对数组(startlist[i]
)中的每个元素测试字母(仅由该字母组成的正则表达式)。
const startlist = ['jambee', 'dangen', 'oragna', 'sabotta'];
const filter1 = [];
const regex = /e/;
for (var i = 0; i < startlist.length; i++) {
const word = startlist[i];
if (regex.test(word)) filter1.push(word);
};
console.log(filter1);
或者,您可以使用数组filter
方法和字符串includes
方法使用的功能稍强的方法
const startlist = ["jambee", "dangen", "oragna", "sabotta"];
const filtered = startlist.filter(word => {
return word.includes('e');
});
console.log(filtered);