PHP正则表达式匹配除正斜杠之外的任何内容

时间:2013-02-14 08:42:00

标签: php regex

我将有两套不同的网址

/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。我做错了什么?

2 个答案:

答案 0 :(得分:3)

这样做:

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

您的正则表达式搜索字符串开头 / ,然后是 marketplace / producer / ,后跟一个或多个数字后跟一个< strong> - 后跟一个或多个不是 / 的字符,并以此结束。

我认为问题在于没有锚定字符,它也匹配输入的子字符串。你还错过了 + ,这使得正则表达式引擎可以找到一个非转义字符。

答案 1 :(得分:1)

只需使用此正则表达式[^/]+$即可。在最后一次正斜杠之后,它将匹配所有内容。