Regexp - 匹配重现模式

时间:2017-12-15 08:31:30

标签: javascript regex

我有一个递归网址,在第一个/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失败。

我已经尝试过寻找可以解决这个问题的正则表达式,但我没有遇到任何符合我需要的正则表达式。

知道如何解决这个问题吗?

2 个答案:

答案 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);
}));