Javascript正则表达式匹配完全限定的域名

Javascript正则表达式匹配完全限定的域名

本文介绍了Javascript正则表达式匹配完全限定的域名,没有协议,可选的子域名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直无法找到这个,而我正在尝试的对我来说并不是很有效。

I haven't been able to find this one and what I'm trying isn't quite working out for me.

我想只匹配那些域名:


  • 不包含协议(http,https,ftp)

  • 可选择包括子域名

  • 使用连字符开始可以包含连字符

  • don't contain a protocol (http, https, ftp)
  • optionally include a subdomain
  • don't start with a hyphen but can contain a hyphen

匹配的示例域名:


  • domain.com

  • example.domain.com

  • example.domain-hyphen.com

  • www.domain.com

  • example.museum

  • domain.com
  • example.domain.com
  • example.domain-hyphen.com
  • www.domain.com
  • example.museum

匹配的示例域名:



  • subdomain.-example.com

  • example.com/parameter

  • example.com?anything

  • www.subdomain.domain.com

  • http://example.com
  • subdomain.-example.com
  • example.com/parameter
  • example.com?anything
  • www.subdomain.domain.com

我目前得到的是什么:

/^(?!:\/\/)(^[a-zA-Z0-9])?.[a-zA-Z0-9-]+\.[a-zA-Z]{2,6}?$/i

它不匹配协议,允许在域内使用连字符,不允许在TLD之后使用尾随字符,并且允许子域(但只允许1个字符)。

It's not matching protocols, allowing hyphen inside the domain, not allowing trailing characters after the TLD, and is allowing a subdomain (but only 1 character).

我仍然需要允许任何长度的子域,不允许www.subdomain.domain.com并且不允许使用前导连字符。

I still need to allow subdomains of any length, not allow www.subdomain.domain.com and not allow a leading hyphen.

推荐答案

尝试

/^(?!:\/\/)([a-zA-Z0-9]+\.)?[a-zA-Z0-9][a-zA-Z0-9-]+\.[a-zA-Z]{2,6}?$/i

这篇关于Javascript正则表达式匹配完全限定的域名,没有协议,可选的子域名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-24 10:50