2016-05-12 15 views
0

Ich witing eine Funktion, die ein HTML class nach dem letzten Teil der URL zurück:Wie ein Regex in ein Array von Strings enthalten?

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

Es funktioniert gut, das Problem ist, dass /reset-pass tatsächlich mehr Zeichen am Ende hat. Zum Beispiel /reset-pass/123.

Wie kann ich es so machen, dass die Funktion footer-pink zurückgibt, wenn die URL /reset-pass/1234 oder /reset-pass/abcd oder andere Muster wie das ist?

+1

können Sie erklären, "Wie kann ich schließen, dass auf die pinkPages Array, so‚footer-pink' zurückgegeben wird, wenn die URL, die übereinstimmt?" Mehr? –

+0

@KhalidHabib Ich habe die Frage bearbeitet. – alex

+0

Anstatt Regex im Array hinzuzufügen, können Sie dynamische Regex mit 'new RegExp()' erstellen. – Rajesh

Antwort

1

Vielleicht möchten Sie eine Regex verwenden, um mit der aktuellen Seite zu vergleichen?

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'; 
} 

Schauen Sie diese Plunker, vielleicht ist es deine Antwort: https://plnkr.co/edit/sC5VCadDLlRJwH6rpB1T?p=preview

+0

Danke. Das war eine sehr einfache und effektive Lösung. – alex

1

Sie können im String-Format regex speichern und dann eine Reihe von regex erstellen.

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);

Verwandte Themen