尝试编写与某些网址匹配的正则表达式。出于我们的目的,我们假设URL是:
http://website.com/Section/subsection/Cows
http://website.com/Section/Cows
http://website.com/Section/subsection/Chickens
我想要匹配:
我最接近的是/\/Section\/([a-zA-Z0-9]+)\/(?!Chickens)/gi
这适用于第一个网址,但第二个网址不会匹配。我知道这是因为它没有[a-zA-z0-9]+
部分,但我不知道如何解决它。
答案 0 :(得分:3)
你很亲密。这是正则表达式:
\/Section\/(?!.*\/Chickens)
它只是匹配部分,然后断言后跟“/ Chickens”的任何内容都无法匹配。
如果您希望它捕获URL路径而不是仅测试匹配,则可以使用额外的.*
(在否定前瞻之外)关闭正则表达式。
答案 1 :(得分:0)
你关闭了。试试这个正则表达式:
/\/Section\/([a-z0-9]+)(?!\/Chickens)/gi
答案 2 :(得分:0)
这个也拒绝了“/ Section / Chickens”:
var r = /\/Section\/(?!(.+\/)*Chickens(\/|\?|#|$))/;
r.test('/Section/Cows'); // true
r.test('/Section/Chickens'); // false
r.test('/Section/CowsChickens'); // true
r.test('/Section/ChickensCows'); // true
r.test('/Section/Cows/Chickens'); // false
r.test('/Section/Cows/Cows/Chickens'); // false
r.test('/Section/Cows/Chickens/Cows'); // false