仅在没有特定字符的情况下匹配

时间:2016-02-07 17:35:14

标签: regex

我正在尝试匹配简单的路线但似乎无法弄清楚如果匹配后斜线是如何不匹配的。

// Example: localhost/person/1
/^person\/(.*)$/

// Example: localhost/person/1/details
/^person\/(.*)\/details$/

我永远无法进入细节路线,因为第一个总是匹配。因此,如果括号后面没有斜杠,我需要弄清楚如何只匹配第一个例子。

2 个答案:

答案 0 :(得分:4)

您可以将(.*)替换为negated character set([^\/]*),以匹配除/以外的所有字符。

/^person\/([^\/]*)$/

答案 1 :(得分:2)

根据您之后的确切匹配,您可能应该使用

/^person\/\d+$/

第一场比赛,

/^person\/\d+\/details$/

第二个。

这些将匹配" / person /"之后的任何数值。部分以及以下" /"。