如何使正则表达式停止在某个角色

时间:2015-05-20 11:20:23

标签: javascript regex

我需要匹配以下路径

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中,我需要转义正则表达式中的所有斜杠。

1 个答案:

答案 0 :(得分:2)

将您的regroute更改为以下内容,以便它停在/

var regroute = route.replace(/\:[a-zA-Z]+/, '([^\/]*)');

请参阅http://codepen.io/anon/pen/NqRPYJ