如何使用正则表达式验证Azure负载均衡器名称?
rules是:
我尝试使用^[A-Za-z0-9][A-Za-z0-9_.-]{1,80}$
,但它匹配以句点结尾的字符串,具有81个字符的字符串,而不匹配仅具有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_]
匹配单个字母数字或下划线)?
关闭组并将其设置为可选$
字符串结尾如果您不想匹配连续的连字符或点,也可以使用
^(?=[A-Za-z0-9_.-]{1,80}$)[A-Za-z0-9][A-Za-z0-9_]*(?:[.-][A-Za-z0-9_]+)*$