首页 > 解决方案 > 用于匹配域名的 JavaScript 正则表达式 (FQDN)

问题描述

我需要验证域

有效的场景是

*.domain.com(或) domain.com(或)domain.domain.com

无效的:

.domain.com(或者)*domain.com

它不应该在字符串的开头允许反斜杠或正斜杠

我试过使用这个表达式,但它失败了。

^(?:\*\.)(http[s]?:\/\/){0,1}(www\.){0,1}[a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,5}[\.]{0,1}

标签: javascriptregexdomain-namefqdn

解决方案


您可以在regex101.com上搜索库。即使没有什么适合ECMA-Script/JavaScript风格的东西,我在PCRE中也找到了一个:Domain with protocol、Third-Level-Domain、Second-Level-Domain、Top-Level-Domain 和 Port。并将其分叉以满足您的需求:

^((\w+)\:\/\/)?(([\w\-]+|\*)\.)*([\w\-]+)\.(\w+)(\:(\d+))?$

更新以前的正则表达式(v2)仅搜索部分,因此也匹配无效示例,因为部分是有效的。通过添加begin ^end 来修复它$。现在正则表达式拒绝无效(*domain.com.domain.com)。

查看我的正则表达式(v3),包括测试


推荐阅读