2017-12-15 8 views
0

ich eine rekursive URL habe, die eine unendliche Menge an ids nach den ersten /pages Bit hat:Regexp - Match wieder auftretenden Muster

/pages/987d6fg8976df898dsa/92834799437324834/923897439874202307/..... 

Und so weiter und so weiter ..

Neben /new oder /edit am Ende haben wie:

/pages/987d6fg8976df898dsa/92834799437324834/923897439874202307/new 
/pages/987d6fg8976df898dsa/92834799437324834/923897439874202307/edit 

brauche ich diese rekursive URLs übereinstimmen, so kam ich mit diesen regexp herauf:

/neu:

^\/pages\/[a-zA-Z0-9-]{0,}/new$ 

/edit:

^\/pages\/[a-zA-Z0-9-]{0,}/edit$ 

Das Problem hier ist, dass es nur Strings übereinstimmt, die eine ID-String haben, so /pages/93848347s7a87sa9ds7d funktioniert, aber /pages/20839283792839289d/023898473947384349 versagt.

Ich habe versucht, nach einem Regexp zu suchen, der das löst, aber ich bin nicht auf irgendwelchen gestoßen, die meinen Bedürfnissen entsprechen.

Irgendeine Idee, wie ich das lösen kann?

+0

Split von '/' und leere Elemente und 'pages' entfernen,' new' & 'edit' vom resultierenden Array. – Tushar

+0

^^/Seiten/[a-zA-Z0-9/-] */new $ '? – melpomene

Antwort

1

Könnten Sie versuchen, diese

^\/pages\/[a-zA-Z0-9-\/]{0,}\/new$ 
1

ich verwenden würde:

/^\/pages\/(?:[a-zA-Z0-9]*\/)*(new|edit)$/ 

var test = [ 
 
    '/pages/987d6fg8976df898dsa/92834799437324834/923897439874202307/new', 
 
    '/pages/987d6fg8976df898dsa/92834799437324834/923897439874202307/edit' 
 
]; 
 
console.log(test.map(function (a) { 
 
    return a+' :'+/^\/pages\/(?:[a-zA-Z0-9]*\/)*(new|edit)$/.test(a); 
 
}));