正则表达式以匹配Azure负载平衡器名称

时间:2020-09-23 14:30:58

标签: regex azure

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

rules是:

  • 可以包含字母数字,下划线,句点和连字符。
  • 以字母数字开头。
  • 以字母数字或下划线结尾。
  • 长度在1-80(含)之间

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

1 个答案:

答案 0 :(得分:2)

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


您可以使用字母数字字符开始匹配,然后选择匹配[A-Za-z0-9.-]之一的0-78个字符并以[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_]匹配单个字母数字或下划线
  • )?关闭组并将其设置为可选
  • $字符串结尾

Regex demo

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

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

Regex demo