如何在没有www的情况下匹配域名的根目录。使用正则表达式

问题描述 投票:6回答:2

我尝试将域名的根与JS中的正则表达式匹配。路径没有www时我有问题。在他自己。

例如,我尝试从这个字符串匹配:

(http://web.archive.org/web/20080620033027/http://www.mrvc.indianrail.gov.in/overview.htm)

这是我正在尝试的正则表达式如下所示。我在regex101.com上试试他

/(?<=(\/\/(www\.)|\/\/)).+?(?=\/)/g

我期望输出数组的名称为web.archive.orgmrvc.indianrail.gov.in,但是获得带有www的web.archive.orgwww.mrvc.indianrail.gov.in。在第二种情况下。

javascript regex match
2个回答
1
投票

那个正则表达式怎么样:

(?<=https?:\/\/(?:www\.)?)(?!www\.).+?(?=\/)

它匹配没有web.archive.orgmrvc.indianrail.gov.inwww.

但是:ぁzxswい

与您的初始正则表达式的差异:

  • 在你的正面lookbehind子句中,我有https://regex101.com/r/5ZqK7n/3/来支持s? URL(如果没有必要删除它)
  • https:可以出现0到1次
  • 在看后面你添加一个负向前瞻(?:www\.)?不匹配,以避免你的(?!www\.)匹配最初的.+?

0
投票

首先,您必须了解正则表达式的匹配方式。

如果设置或(|)组,则它与每个字符的整个组匹配。例如,输入是www.,模式是123 122。第二组(12)总是匹配两个单词。

因为两个单词的第一个和第二个字符在第二个字符处匹配(123|12)组,所以不需要检查第三个字符。

我认为你的目的是首先将12组用于整个单词(123)并忽略123组,因为12组已经匹配。

我建议不要使用后面看,并得到第一组($ 1)如下:

123

\/\/(?:www\.)?(.+?)\/

© www.soinside.com 2019 - 2024. All rights reserved.