正则表达式查找带有或不带 www 的有效 URL,包括点但不包括双点

regex to find valide URL with or without www, including dot but excluding double dots

我试图找到一个正则表达式来匹配包含或不包含 'www' 的 URL,后跟可以包含点但不能包含两个或多个连续点的有效字符串。为了简单起见,我将问题仅限于具有子域和 .com 域的 URL。 例如:

www.aBC.com      #MATCH
abc.com          #MATCH
a_bc.de8f.com    #MATCH
a.com            #MATCH
abc              #NO MATCH
abc..com         #NO MATCH

我用正则表达式得到的最接近的是 \w+.[\w]+.com,但这不匹配简单的“a.com”。我正在使用“\w”而不是“。”因为否则我不知道如何依次避免两个或更多点。

感谢任何帮助。

使用

(?:\w+\.)*\w+\.com

参见regex proof

解释

-------------------------------------------------------------------------------
  (?:                      group, but do not capture (0 or more times
                           (matching the most amount possible)):
--------------------------------------------------------------------------------
    \w+                      word characters (a-z, A-Z, 0-9, _) (1 or
                             more times (matching the most amount
                             possible))
--------------------------------------------------------------------------------
    \.                       '.'
--------------------------------------------------------------------------------
  )*                       end of grouping
--------------------------------------------------------------------------------
  \w+                      word characters (a-z, A-Z, 0-9, _) (1 or
                           more times (matching the most amount
                           possible))
--------------------------------------------------------------------------------
  \.                       '.'
--------------------------------------------------------------------------------
  com                      'com'