0

我将有 2 组不同的 URLS

/marketplace/producer/123-producer-name
/marketplace/producer/123-producer-name/5-genre/500-max-price/0-added/newest/1-page

我知道第二个的正则表达式,但对于第一个我发现它很棘手。我正在尝试匹配表达式,但我想确保它也不匹配第二个。我正在使用以下内容;

/\/marketplace\/producer\/([0-9]+)\-[^\/]/

最后我的逻辑是匹配除正斜杠之外的每个字符,这意味着它可能匹配第二个字符。但是当我测试它时,即使使用正斜杠它也会返回 true。我究竟做错了什么?

4

2 回答 2

3

像这样做:

/^\/marketplace\/producer\/([0-9]+)-[^\/]+$/

您的正则表达式搜索以 / 开头的字符串后跟市场/生产者 /后跟 1 个或多个数字,后跟-后跟一个或多个不是/的字符,并在那里结束。

我认为问题在于没有锚定字符并且它也匹配输入的子字符串。您还错过了+,它使正则表达式引擎查找单个非正斜杠字符。

于 2013-02-14T08:44:21.347 回答
1

只需使用这个正则表达式[^/]+$。它将匹配最后一个正斜杠之后的所有内容。

于 2013-02-14T08:47:51.310 回答