首页 > 解决方案 > 匹配 Azure 负载均衡器名称的正则表达式

问题描述

如何使用正则表达式验证天蓝色负载均衡器名称?

规则是:

我尝试使用^[A-Za-z0-9][A-Za-z0-9_.-]{1,80}$,但它匹配以句点结尾的字符串、81 个字符的字符串并且不匹配只有 1 个字符的字符串。

标签: regexazure

解决方案


您尝试的模式至少匹配 2 个字符,因为这部分[A-Za-z0-9]匹配单个字符,这部分[A-Za-z0-9_.-]{1,80}匹配至少 1 个字符,最多可以匹配 81 个字符。


您可以使用字母数字字符开始匹配,然后可以选择匹配匹配其中之一的 0-78 个字符[A-Za-z0-9.-]并结束匹配,[A-Za-z0-9_]因此它也可以以下划线结尾。

^[A-Za-z0-9](?:[A-Za-z0-9.-]{0,78}[A-Za-z0-9_])?$

解释

  • ^字符串的开始
  • [A-Za-z0-9]匹配单个字母数字
  • (?:非捕获组
    • [A-Za-z0-9.-]{0,78}匹配任何列出的允许字符的 0-78 次重复
    • [A-Za-z0-9_]匹配单个字母数字或下划线
  • )?关闭组并使其可选
  • $字符串结束

正则表达式演示

如果您不想匹配连续的连字符或点,您也可以使用

^(?=[A-Za-z0-9_.-]{1,80}$)[A-Za-z0-9][A-Za-z0-9_]*(?:[.-][A-Za-z0-9_]+)*$

正则表达式演示


推荐阅读