我对正则表达式很陌生。
基本上我正在尝试创建一个正则表达式来评估我们系统中的 URL 路径。但是,我们的系统中存在一个已知错误,导致 URL 路径变得非常混乱。
理想情况下,URL 应该是
/mobile/retail.*
由于该错误,URL 将在“/mobile”和“/retail”之间包含“其他内容”,如下所示
/mobile(/.*)?/retail
但具有挑战性的一点是,当我想在“其他”中忽略某些词时,即销售、搜索、批次、登录。所以情况应该是这样的
所以我有一个这样的测试用例:
- /mobile/retail -> 匹配
- /mobile/retail/something -> 匹配
- /mobile/something/retail/something -> 匹配
- /mobile/something/retail/something/sale -> 匹配
- /mobile/something/something/retail/something/sale -> 匹配
- /mobil/sale/something -> 不匹配
- /mobile/something/sale/something -> 不匹配
- /mobile/something/sale/something/retail -> 不匹配
- /mobile/lot/test/retail -> 不匹配
- /mobile/test/lot/test/retail -> 不匹配
- /mobile/path/test2/test3/testx/lot/test/retail -> 不匹配
我有点坚持这个正则表达式,它没有按我想要的方式工作..
/mobile(/(?!sale|search|lot|login).*)?/retail.*
上面的正则表达式在以下情况下不起作用:
- /移动/某物/销售/某物/零售
- /移动/测试/批次/测试/零售
- /mobile/path/test2/test3/testx/lot/test/retail
要排除的词是严格的。例如,下面的列表应该通过:
- /移动/情节/零售
- /移动/批次/零售
- /移动/大量销售/零售
- /mobile/sale-item/retail/something/test/sale
- /mobile/search-prg-item-test/test/retail
非常感谢任何具有强大的正则表达式知识和任何反馈的人。