【发布时间】:2015-05-20 11:20:23
【问题描述】:
我需要匹配以下路径
var path = '/posts/type/my-type';
到以下路线:
var route = '/posts/type/:type';
为此,首先,我将route 变量设为正则表达式:
var regroute = route.replace(/\:[a-zA-Z]+/, '(.*)');
然后从中创建一个正则表达式:
var regexp = new RegExp('^' + regroute + '\/?$');
当我匹配路由路径时,匹配有效。但是,当它看到“/”字符时,它存在不停止匹配的问题。所以,如果我有一个路径:'/posts/type/my-type/hello-world/yes',匹配仍然显示为真。或者,如果路径末尾有斜线 (/posts/type/my-type/),my-type/ 会匹配。
这是一个代码笔:http://codepen.io/anon/pen/gpwbxK?editors=001
奇怪的是,当我在 PHP 中设置相同的正则表达式时,一切都很好,但我认为这是因为在 PHP 中,我需要转义正则表达式中的所有斜杠。
【问题讨论】:
-
var regexp = new RegExp('^' + regroute + '/?$'); -
@AvinashRaj,我建议将此作为答案发布,否则我会
-
@AvinashRaj 我不敢相信我没有想到这一点。谢谢!
标签: javascript regex