Regex 使用正则表达式解析URL(可选跟踪代码和哈希)
我有很多想解释的场景,但似乎无法确定我的匹配字符串(#regex初学者)。不幸的是,没有JavaScript是可能的,因为这个正则表达式正在Adobe Analytics的分类规则生成器中使用 我要找的是三组人:Regex 使用正则表达式解析URL(可选跟踪代码和哈希),regex,url,Regex,Url,我有很多想解释的场景,但似乎无法确定我的匹配字符串(#regex初学者)。不幸的是,没有JavaScript是可能的,因为这个正则表达式正在Adobe Analytics的分类规则生成器中使用 我要找的是三组人: 基本URL(不包括http[s]:\/\/www.) 跟踪代码(在?之后,但在#之前) 散列(在#之后的所有内容) 问题是,跟踪代码和散列是可选的。两者都可能出现,其中一个可能出现,或者没有一个出现。URL中也不能存在多个跟踪代码或多个哈希,并且哈希将永远不会出现在跟踪代码之前 到目前
^http[s]:\/\/www.(.+\/.+)\?(.+)?#(.+)?
如果同时存在跟踪代码和散列,那么这种方法可以很好地工作,但是如果其中一个或两个都不存在,那么这种方法就不起作用
下面是我的测试用例。他们都需要返回三个组,但我知道组2和/或组3可能是空的
- ?
Chris这似乎是个好办法,匹配您上面的所有测试用例:
^https:\/\/www\.([^?#\s]+)(\?[^\s#]*)?(#.*)?
- 第1组是
最多可使用https://wwww.
或#
?
- 组2是可选的,匹配
和?
之后的任何字符#
- 组3是可选的,与
和后面的任何字符匹配#
https://www.example.com/en-US/tires/wrangler-duratrac?sku=150638601#121
:
- 第1组=
example.com/en-US/tires/wrangler-duratrac
- 第2组=
?sku=150638601
- 第三组=
#121
https://www.example.com/en-US/tires/wrangler-duratrac#121
- 第1组=
example.com/en-US/tires/wrangler-duratrac
- 第2组为空
- 第三组=
#121