我有一个递归网址,在第一个/pages
位之后可以有无限量的ID:
/pages/987d6fg8976df898dsa/92834799437324834/923897439874202307/.....
等等......
最后还有/new
或/edit
,如:
/pages/987d6fg8976df898dsa/92834799437324834/923897439874202307/new
/pages/987d6fg8976df898dsa/92834799437324834/923897439874202307/edit
我需要匹配这些递归网址,所以我想出了这些正则表达式:
/新:
^\/pages\/[a-zA-Z0-9-]{0,}/new$
/编辑:
^\/pages\/[a-zA-Z0-9-]{0,}/edit$
这里的问题是它只匹配具有一个id字符串的字符串,因此/pages/93848347s7a87sa9ds7d
有效但/pages/20839283792839289d/023898473947384349
失败。
我已经尝试过寻找可以解决这个问题的正则表达式,但我没有遇到任何符合我需要的正则表达式。
知道如何解决这个问题吗?
答案 0 :(得分:1)
你能试试吗
^\/pages\/[a-zA-Z0-9-\/]{0,}\/new$
答案 1 :(得分:1)
我使用:
/^\/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);
}));