Javascript JS正则表达式:使用条件解析URL
我需要解析一组URL,并在特殊条件下从URL中提取特定元素。为了进一步解释它,考虑一组URL: 如您所见,有两组URL,一组包含单词“关键字”,另一组则没有。在我的代码中,我将收到域名后的url部分(例如:/appName1/some/extra/parts/keyword/rest/of/the/url) 我有两个任务,一个是检查url中是否存在“关键字”,第二个是仅当url中不存在“关键字”时才执行,解析url以获取两个组作为appName和url的其余部分(例如:grp 1.appName3和grp 2.rest/of/the/url,因为url 3中没有“关键字”)。整个过程应该在一个正则表达式中完成 我的进展:Javascript JS正则表达式:使用条件解析URL,javascript,regex,regex-negation,regex-lookarounds,Javascript,Regex,Regex Negation,Regex Lookarounds,我需要解析一组URL,并在特殊条件下从URL中提取特定元素。为了进一步解释它,考虑一组URL: 如您所见,有两组URL,一组包含单词“关键字”,另一组则没有。在我的代码中,我将收到域名后的url部分(例如:/appName1/some/extra/parts/keyword/rest/of/the/url) 我有两个任务,一个是检查url中是否存在“关键字”,第二个是仅当url中不存在“关键字”时才执行,解析url以获取两个组作为appName和url的其余部分(例如:grp 1.appNa
- 我能够将应用程序名和url的其余部分解析为组,但无法应用该条件
- 我找到了一种选择没有“关键字”的毒刺的方法,我不确定这样做是否正确:
^((?!.\*关键字)。\*)$
- 接下来,为了将以上两种方法结合起来,我尝试了一个经过长时间搜索后发现的语法
。结果是: (?(?=^((?!.*keyword).*)$)\1) (?(?=^((?!.*关键字)。*)$)\1)但它表示组结构无效(?(?=regex)then | else)
我已经阅读了许多stackoverflow条目和教程,但没有达到实际要求。请帮我解决这个问题。是的,这实际上是可能的。据我所知,你有以下情况:
/appName/some/extra/parts/keyword/rest/of/the/url
/appName/rest/of/the/url
^(?!.*\/keyword\/)\/(.*?)\/(.*)$
说明:
在字符串开头断言位置`^
是一个负的向前看,并向前看以确保字符串不包含/keyword/。这就是魔法发生的地方(?!.\/keyword\/)
匹配“\/
”,即域名后的斜杠/
贪婪地捕获第一个组(示例中的appname),直到下一个斜杠(.*?\/
是捕获“rest/of/the/url”的组(.*)$
RegExp
Hi@Mathias-S是否可以执行此操作,我尝试了此操作,但它似乎会返回组,即使其中有“关键字”。我不确定要求是否明确。如果url中存在“关键字”,则不应返回任何组。因此,如果存在关键字,则您希望获取整个url,如果不存在关键字,则希望获取组?或者,如果关键字存在,你什么都不想要吗?如果关键字存在,我什么都不想要,如果它不存在,组只需要使用一个消极的前瞻。我已经用一个正则表达式更新了我的答案。这能解决你的问题吗?