我尝试将域名的根与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
的mrvc.indianrail.gov.in
和www.
但是:ぁzxswい
与您的初始正则表达式的差异:
s?
URL(如果没有必要删除它)https:
可以出现0到1次(?:www\.)?
不匹配,以避免你的(?!www\.)
匹配最初的.+?
首先,您必须了解正则表达式的匹配方式。
如果设置或(|)组,则它与每个字符的整个组匹配。例如,输入是www.
,模式是123 122
。第二组(12)总是匹配两个单词。
因为两个单词的第一个和第二个字符在第二个字符处匹配(123|12)
组,所以不需要检查第三个字符。
我认为你的目的是首先将12
组用于整个单词(123)并忽略123
组,因为12
组已经匹配。
我建议不要使用后面看,并得到第一组($ 1)如下:
123
\/\/(?:www\.)?(.+?)\/