Рассмотрим следующий пример:Передаёт строку в регулярное выражение
function filterFoods() {
var foods = [
{food: 'Bacon'}, {food: 'Butter'}, {food: 'Chicken'}, {food: 'Cocoa butter'},
{food: 'Saussages'}, {food: 'Ham'}, {food: 'Duck'}, {food: 'Salmon'},
{food: 'Fish'}, {food: 'Lamb'}, {food: 'Fries'}, {food: 'Tomatoes'},
{food: 'Chicken'}, {food: 'Carrot'}, {food: 'Egg'}, {food: 'Avocado'},
{food: 'Duck'}, {food: 'Hello'}, {food: 'Cheese'}, {food: 'Carrot'},
{food: 'Potato'}, {food: 'Sweet Potato'}, {food: 'Pineapple'}, {food: 'Peanut'},
]
return foods.filter(function(food) {
return (/po/gi).test(food.food);
});
}
console.log(
filterFoods()
)
http://jsbin.com/gudekaruha/edit?js,console,output
Я получаю обратно [{food: 'Potato'},{food: 'Sweet Potato'}]
, что это то, что я хочу.
Но я хочу, чтобы иметь возможность что-то передать в функцию filterFoods, а затем в регулярное выражение, вроде как это:
function filterFoods(query) {
var foods = [
{food: 'Bacon'}, {food: 'Butter'}, {food: 'Chicken'}, {food: 'Cocoa butter'},
{food: 'Saussages'}, {food: 'Ham'}, {food: 'Duck'}, {food: 'Salmon'},
{food: 'Fish'}, {food: 'Lamb'}, {food: 'Fries'}, {food: 'Tomatoes'},
{food: 'Chicken'}, {food: 'Carrot'}, {food: 'Egg'}, {food: 'Avocado'},
{food: 'Duck'}, {food: 'Hello'}, {food: 'Cheese'}, {food: 'Carrot'},
{food: 'Potato'}, {food: 'Sweet Potato'}, {food: 'Pineapple'}, {food: 'Peanut'},
]
return foods.filter(function(food) {
return (/query/gi).test(food.food);
});
}
console.log(
filterFoods('po')
)
Но я получаю обратно пустой массив. Теперь исправьте меня, если я ошибаюсь, но я думаю, что это потому, что я передаю его как строку, так как я могу это сделать?
Заранее спасибо
'new RegExp (query," gi ")'. – Xufox