我有很多我想要考虑的场景,但似乎无法确定我的匹配字符串(#regexbeginner)。不幸的是,没有JavaScript是可能的,因为这个正则表达式正在Adobe Analytics的分类规则构建器中使用。
我所追求的是三组:
http[s]:\/\/www.
)问题是,跟踪代码和哈希值可选。两者都可能出现,其中一个可能出现,或者都不会出现。 URL中也不会有更多的跟踪代码或多个哈希,并且哈希将永远不会出现在跟踪代码之前。
这是我到目前为止所处的地方:
^http[s]:\/\/www.(.+\/.+)\?(.+)?#(.+)?
如果同时存在跟踪代码和散列,则此方法可以正常工作,但如果存在跟踪代码和散列,则无法正常工作。
以下是我的测试用例。所有人都需要返回三组,但我知道第2组和/或第3组可能是空的。
任何帮助将不胜感激。对于有一点经验的人来说,感觉这应该很容易。
谢谢, 克里斯
答案 0 :(得分:1)
这似乎可以解决所有上述测试用例:
^https:\/\/www\.([^?#\s]+)(\?[^\s#]*)?(#.*)?
https://wwww.
之后#
或?
之后的任何内容。?
以及最高#
#
和使用示例https://www.example.com/en-US/tires/wrangler-duratrac?sku=150638601#121
:
example.com/en-US/tires/wrangler-duratrac
?sku=150638601
#121
https://www.example.com/en-US/tires/wrangler-duratrac#121
example.com/en-US/tires/wrangler-duratrac
#121