c# - 用于验证 C# 和 Javascript 中的 FQDN 的正则表达式

标签 c# javascript .net regex fqdn

在 C# 和 Javascript 中验证 FQDN 的正确正则表达式是什么? 我四处寻找,发现了不同的规范。哪一个是正确的。

我发现的几个例子:

   1.(?=^.{1,254}$)(^(?:(?!\d+\.|-)[a-zA-Z0-9_\-]{1,63}(?<!-)\.?)+(?:[a-zA-Z]{2,})$)

    2. (?=^.{1,254}$)(^(?:(?!\d|-)[a-zA-Z0-9\-]{1,63}(?<!-)\.?)+(?:[a-zA-Z]{2,})$)

    3. \b((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}\b 

   (Regular Expression cook book)

请帮忙

最佳答案

一般来说,正则表达式食谱是一个很好的信息来源,由两位正则表达式专家编写,因此您应该从那里开始。那里概述的解决方案还不太适合您的需求(它不会验证整个字符串,而是匹配子字符串,并且不会检查字符串的总长度),因此我们可以对其进行一些修改:

/^(?=.{1,254}$)((?=[a-z0-9-]{1,63}\.)(xn--+)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}$/i

说明:

^                      # Start of string
(?=.{1,254}$)          # Assert length of string: 1-254 characters
(                      # Match the following group (domain name segment):
 (?=[a-z0-9-]{1,63}\.) # Assert length of group: 1-63 characters
 (xn--+)?              # Allow punycode notation (at least two dashes)
 [a-z0-9]+             # Match letters/digits
 (-[a-z0-9]+)*         # optionally followed by dash-separated letters/digits
 \.                    # followed by a dot.
)+                     # Repeat this as needed (at least one match is required)
[a-z]{2,63}            # Match the TLD (at least 2 characters)
$                      # End of string

关于c# - 用于验证 C# 和 Javascript 中的 FQDN 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17986371/

相关文章:

c# - 什么时候需要/适合使用 InAttribute 和 OutAttribute 进行 COM Interop

javascript - Bootstrap - 减少文本框和标签等表单控件之间的间距

javascript - 使用 <link rel ="alternate"media ="print"> 打印外部网页

c# - Double.Parse 在转换小数点后 8 位字符串时丢失精度

c# - 从数据库查询 DateTime 字段时,我可以控制 DateTimeKind 吗?

c# - TCP 异步套接字抛出 10057

c# - 多个类中如何使用同名初始化多个TraceSource

javascript - 带预览和删除的图像上传

c# - 是否可以缩短 XDocument 的 XDeclaration?

c# - 锁变量应该声明为 volatile 吗?