在 C# 中验证 FQDN

2024-02-29

有人有正则表达式来验证合法的 FQDN 吗?

现在,我使用这个正则表达式:

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

但是,此正则表达式会导致“aa.a”无效,而“aa.aa”有效。

有谁知道为什么?


这是一个较短的模式:

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

至于为什么模式确定“aa.a”无效而“aa.aa”有效,这是因为{2,}- 如果你把 2 改成 1 的话

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

它应该认为“aa.a”和“aa.aa”都是有效的。

string pattern = @"(?=^.{1,254}$)(^(?:(?!\d+\.)[a-zA-Z0-9_\-]{1,63}\.?)+(?:[a-zA-Z]{1,})$)";
bool isMatch = Regex.IsMatch("aa.a", pattern);

isMatch对我来说是真的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中验证 FQDN 的相关文章

随机推荐

  • Lua 整数类型

    我真的需要 Lua 中有一个整数类型 我所说的整数类型是指定义常用运算符 等 并表现得像整数的类型 内部表示并不重要 用表做这样的事情非常简单 问题是 我尝试过 并且性能非常差 当然 这是我的部分实现 function num op a b
  • 什么时候可以专门针对私有成员类型设计模板?

    鉴于这些定义 template
  • 如何按字符串中的第二个单词的字母顺序对列表进行排序

    如果我有一个列表 并且想继续向其中添加行并按姓氏字母顺序对它们进行排序 该怎么办 排序似乎只是按字符串的第一个字母重新排列它们 line James Edward Example line linesList append join lin
  • 有没有办法为 NavigationLink 添加额外的功能?斯威夫特用户界面

    我想向 NavigationLink 添加一个额外的功能 示例代码是这样的 struct ContentView View func yes print yes var body some View NavigationView Navig
  • while 循环不工作吗? (找不到变量)

    我的 do while 循环遇到问题 找不到变量来测试条件是否为真 这是我的代码 import java util Scanner public class Loops public static void main String args
  • Microsoft Azure 认知服务手写检测边界框参数

    我目前正在使用Microsoft Azure 认知服务手写检测 API https learn microsoft com en in azure cognitive services computer vision quickstarts
  • graph - 如果我用哈希表替换邻接列表中的每个链表,有什么缺点?

    CLRS excise 22 1 8 我是自学 没有在任何大学学习 假设每个数组条目 Adj u 不是链表 而是一个 包含顶点 v 的哈希表 其中 u v E 如果所有 边缘查找的可能性相同 预计的时间是多少 判断图中是否有边 有什么缺点
  • 在 SELECT 中创建数组

    我正在使用 PostgreSQL 9 1 并且有以下数据结构 A B 1 a 1 a 1 b 1 c 1 c 1 c 1 d 2 e 2 e 我需要一个产生此结果的查询 1 4 c 3 a 2 b 1 d 1 2 1 e 2 A 1 总共
  • 通过 gspread 和 Google Sheets API 更改 Google Sheets 中的列格式

    我正在使用 gspread 并且正在寻找一种通过脚本更改列格式的正确方法 我有一个包含持续时间的专栏 我想将整个列的格式更改为duration 在 Google UI 中 我可以标记整个列 然后单击格式 然后单击编号并设置duration
  • Eclipse:导出运行配置

    我用 eclipse 编写了一个复杂的 Java 应用程序 它使用了项目文件夹中包含的许多 jar 库 有没有一种快速的方法来导出应用程序的运行配置 允许我从 shell 运行它 我实际上不需要在机器上移动它 所以没有 jar 导出或类似的
  • 将测试双打与 DbEntityEntry 和 DbPropertyEntry 结合使用

    我正在按照概述使用 EF6 中的新测试替身这里来自 MSDN http msdn microsoft com en us data dn314431 aspx contextInterface 带有起订量和 nUnit 的 VS2013 一
  • 如何使用 pycurl 读取标题

    如何读取 PyCurl 请求返回的响应标头 有多种解决方案 默认情况下 它们被删除 这是一个 使用选项 HEADERFUNCTION 的示例 它可以让您指示 函数来处理它们 其他解决方案是选项 WRITEHEADER 与 WRITEFUNC
  • 在 x86 平台中使用 -mcmodel=kernel 标志

    我正在尝试将为 x86 架构构建的设备驱动程序交叉编译到 ARM 平台 它的编译没有任何错误 但我认为所有功能都不可用 所以我检查了 makefile 并找到了这个特定的部分 ifeq ARCH x86 64 EXTRA CFLAGS mc
  • Firebase 和后端逻辑

    我是 parse com 用户 现在我正在寻找其他服务 如何将后端逻辑写入 firebase 假设我想验证服务器端的所有值 或者触发一些事情 我想到了一种解决方案 但我想知道推荐的方法 我想 创建使用express的nodejs服务器 创建
  • 使用 classpathentry 包含多个 jar

    我有一个 eclipse 的 classpath 文件 如下所示
  • Laravel 3 - 如何验证复选框数组,至少选中 1 个?

    我开始学习 Laravel 并且仍在学习曲线上 现在我从 Laravel 3 开始 但一旦我开始工作 很可能会将我的项目切换到 Laravel 4 现在的问题是 如何验证复选框数组 我想验证组内至少有 1 个复选框已启用 选中 我在 Lar
  • Bulma 导航栏和 VueJS 路由器活动链接

    我已经开始使用布尔玛0 7 1 and VueJs 2 5 17 现在 我正在使用 Vue 路由器组件 并且我希望每当我位于链接表示的 页面 上时 将导航栏中的按钮设置为活动状态 我的代码如下
  • 由于冲突,无法删除一些未标记的 docker 镜像

    我无法显式删除一些未标记的 docker 映像 具体来说 那些带有标签的
  • C#/.NET:在 C# 中创建动态视觉效果

    注意 我不太确定如何标题或标记这个问题 所以如果您有任何想法 请帮忙 我目前正在设想一些可能的项目 涉及动态渲染某些东西 作为假设的例子 无论是点 线 文本还是五线谱上的音符 但是 如果我要承担这些项目 我 我不太确定如何实现这个设计 我很
  • 在 C# 中验证 FQDN

    有人有正则表达式来验证合法的 FQDN 吗 现在 我使用这个正则表达式 1 254 d a zA Z0 9 1 63 a zA Z 2 但是 此正则表达式会导致 aa a 无效 而 aa aa 有效 有谁知道为什么 这是一个较短的模式 1