我将有两套不同的网址
/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。我做错了什么?
答案 0 :(得分:3)
这样做:
/^\/marketplace\/producer\/([0-9]+)-[^\/]+$/
您的正则表达式搜索字符串以开头 / ,然后是 marketplace / producer / ,后跟一个或多个数字后跟一个< strong> - 后跟一个或多个不是 / 的字符,并以此结束。
我认为问题在于没有锚定字符,它也匹配输入的子字符串。你还错过了 + ,这使得正则表达式引擎可以找到一个非转义字符。
答案 1 :(得分:1)
只需使用此正则表达式[^/]+$
即可。在最后一次正斜杠之后,它将匹配所有内容。