2016-05-12 3 views
0

Я witing функцию, которая возвращает HTML class согласно последней части URL:Как включить регулярное выражение в массив строк?

const currentPage = this.$route.path 
const pinkPages = [ '/', '/forgot-pass', '/reset-pass' ] 
if (pinkPages.indexOf(currentPage) > -1) return 'footer-pink' 

Он отлично работает, проблема заключается в том, что /reset-pass на самом деле имеет больше символов в конце. Например, /reset-pass/123.

Как я могу сделать так, чтобы функция возвращала footer-pink, когда URL-адрес равен /reset-pass/1234 или /reset-pass/abcd или другой шаблон?

+1

вы можете объяснить «Как я могу включить, что в массив pinkPages, так что«сноска-pink' возвращается, если URL совпадает?» Больше? –

+0

@KhalidHabib Я редактировал вопрос. – alex

+0

вместо добавления регулярного выражения в массив, вы можете создать динамическое регулярное выражение с помощью 'new RegExp()'. – Rajesh

ответ

1

Возможно, вы хотите использовать регулярное выражение, чтобы попытаться соответствовать текущей странице?

console.log(matchWith('/forgot-pass')); 
console.log(matchWith('/reset-pass/')); 
console.log(matchWith('/reset-pass/toto')); 
console.log(matchWith('/another')); 

function matchWith(page) { 
    var regex = /(^\/$|\/forgot-pass$|\/reset-pass\/(.*))/ 
    if(page.match(regex)) 
     return true 
    return false 
} 
// for your sample 
if(matchWith(this.$route.path)) { 
    return 'footer-pink'; 
} 

Посмотрите это plunker, может быть, это ваш ответ: https://plnkr.co/edit/sC5VCadDLlRJwH6rpB1T?p=preview

+0

Спасибо. Это было очень простое и эффективное решение. – alex

1

Вы можете хранить регулярное выражение в виде строки, а затем создать массив регулярных выражений.

var arr = ["test", "foo", "test2", "bar", "test3"]; 
 
var reg_str = ["^test", "o$"]; 
 
var regex_list = reg_str.map(function(r) { 
 
    return new RegExp(r); 
 
}) 
 

 
var filtered_list = arr.filter(function(item) { 
 
    return regex_list.filter(function(r) { 
 
    return r.test(item); 
 
    }).length > 0; 
 
}); 
 

 
console.log(filtered_list);

Смежные вопросы