我尝试将域名的根与JS中的正则表达式匹配。当路径没有 www. 在他自己身上时,我有一个问题。
例如,我尝试从这个字符串匹配:
(http://web.archive.org/web/20080620033027/http://www.mrvc.indianrail.gov.in/overview.htm)
这就是我尝试的正则表达式,如下所示。我试穿他 regex101.com
/(?<=(//(www.)|//)).+?(?=/)/g
我希望输出数组的名称为 web.archive.org
和 mrvc.indianrail.gov.in
,但在第二种情况下使用 www 获得web.archive.org
和www.mrvc.indianrail.gov.in
。
这个正则表达式呢:
(?<=https?://(?:www.)?)(?!www.).+?(?=/)
它匹配web.archive.org
和没有www.
的mrvc.indianrail.gov.in
演示:https://regex101.com/r/5ZqK7n/3/
与初始正则表达式的区别:
- 在您的正面回溯条款中,我
s?
支持https:
URL(如果没有必要,请将其删除( (?:www.)?
可以出现 0 到 1 次在后视之后,您添加了一个负的预
(?!www.)
不匹配,以避免您的.+?
与初始www.
匹配
首先,您必须了解正则表达式如何匹配。
如果设置 or(|( 组,则每个字符都匹配整个组。例如,输入123 122
,模式(123|12)
。第二组 (12( 总是与两个单词同时匹配。
由于这两个单词的第一个和第二个字符12
第二个字符与第二个字符的组匹配,因此无需检查第三个字符。
我认为您的目的是首先将123
组应用于整个单词(123(,并忽略12
组123
因为该组已经匹配。
我建议不要使用"向后看",并像下面这样获得第一组($1(:
//(?:www.)?(.+?)/
https://regex101.com/r/Ufxzeq/1