我需要匹配以下路径
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',匹配仍然显示为true。或者如果我在路径的末尾有一个斜杠(/ posts / type / my-type /),my-type/
会匹配。
这是一个codepen:http://codepen.io/anon/pen/gpwbxK?editors=001
奇怪的是,当我在PHP中设置相同的正则表达式时,一切都很好,但我认为这是因为在PHP中,我需要转义正则表达式中的所有斜杠。
答案 0 :(得分:2)
将您的regroute
更改为以下内容,以便它停在/
:
var regroute = route.replace(/\:[a-zA-Z]+/, '([^\/]*)');