javascript - 用于匹配域名的 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}
解决方案
您可以在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),包括测试
推荐阅读
- python - 同心环树莓派
- google-chrome - 在 Chrome 中模拟网络请求的不同延迟
- sql - group by 子句中的错误
- javascript - vm.attribute 与 this.attribute
- netlogo - Netlogo 中是否有 NOOP?
- python - 在 Python 中调用嵌套模块
- asp.net - 无法对超过 65500 行的数据透视表使用宏
- rust - 如何使用 serde 从 XML 属性中反序列化一个数字?
- apache-kafka - 使用 kafka-avro-console-consumer 将 Avro 记录作为二进制数组获取
- highcharts - 如何计算桑基图中的权重?