我在PowerShell(.NET Framework)中开发了一个函数,用于从任何给定的Azure Blob存储中检索数据:到目前为止,还不错。
不幸的是,当涉及到验证用户的输入时,我不能依赖外部模块或库,例如Azure SDK for .NET的NameValidator类。
然而,命名和引用容器、Blob和元数据这篇文章详细介绍了命名规则,因此regex模式可能会起到拯救作用。
对于容器名称,我想出了这个,它似乎适合:
(?=^.{3,63}$)(?!.*--)[^-][a-z0-9-]*[^-]
容器名称
容器名称必须是有效的DNS名称,符合以下命名规则:
但是,对于 Blob 名称,我无法绕过路径段的计数:
(?=^.{1,1024}$)(?<=^|\/)(\S*?)[^\.] (?=\/|$)
注意:Azure存储模拟器已被弃用,因此超出了范围。
Blob名称
blob名称必须符合以下命名规则:
Blob服务基于平面存储方案,而不是分层方案。但是,您可以在blob名称中指定字符或字符串分隔符来创建虚拟层次结构。例如,下面的列表显示了有效和唯一的blob名称。请注意,字符串在同一容器中既可以作为blob名称也可以作为虚拟目录名称有效:
/a
/a.txt
/a/b
/a/b.txt
枚举blob时,可以利用分隔符字符。
NB:就在问这个问题之前,我发现了这个可以回答我已经自己解决的问题或使用前面提到的类:
Azure Container Name RegEx
如何验证Azure存储blob名称
顺便问一下,有人知道PowerShell使用的是哪种类型的正则表达式吗?
您需要使用
^(?!.{1025})/?[^/]*[^/.](?:/[^/]*[^/.]){0,253}$
^(?=.{1,1024}$)/?[^/]*[^/.](?:/[^/]*[^/.]){0,253}$
请参阅正则表达式演示。
细节:
^
-字符串的开头(?=.{11024}$)
-字符串应包含1到1024个字符。(?!.{1025})
-字符串不能包含超过1025个字符。/
-可选的/
[^/]*[^/]
-零个或多个字符而不是/
,然后是一个字符而非/
和
(?:/[^/]*[^/]){0253}
-零到253次出现的/
之后是零个或多个字符,而不是/
,然后是一个字符,不是和
$
-字符串结尾
问题内容: 我正在尝试创建一个正则表达式来根据以下条件验证用户名: 仅包含 字母数字 字符, 下划线 和 点 。 下划线和点号不能位于用户名(例如/ / / )的 末尾 或 开头 。 下划线和点不能 彼此相邻 (例如)。 下划线或点不能被多次使用 的行中 (例如,/ )。 字符数必须在8到20之间。 到目前为止,这是我所做的;听起来它强制执行 除了第5条规则以外的 所有标准规则。我不知道如何添加第
问题内容: 我正在尝试使用以下规则在Java中使用用户名链: 长度> = 3 有效字符:az,AZ,0-9,点,破折号和下划线。 有人可以帮我提供正则表达式吗? 问题答案: 试试这个正则表达式:
要求: 在我的角度应用程序中,用户密码应符合以下要求, < li >最少八个字符 < li >至少一个大写字母 < li >至少一个小写字母 < li >至少一个号码 < li >至少一个特殊字符 问题: 对于上述要求,我使用下面的正则表达式。 前任:1F4@sf5s6,18F4@sf5s6 问题: Q1:这个正则表达式不符合我的要求吗? Q2:如何解决这个问题? Q3:有没有其他方法来实现这个要
问题内容: 谁能帮助我创建用于密码验证的正则表达式。 条件为“密码必须包含8个字符和至少一个数字,一个字母和一个唯一字符,例如 问题答案:
我需要有关验证电话号码的正则表达式行的帮助,它如下所示: 这些是它验证的格式: 我想验证如下数字: +263 772 485 384 773456284 0773456284 大部分是国际号码
我需要制作一个密码模式验证器 密码应具有: < li>1个大写字母 < li>1个小写字母 < li >一个号码 < li >最小长度为8。 我发现了这个正则表达式模式: 然而,验证器总是声称我的输入无效 根据 https://regex101.com/r/AfAdKp/1 此值应该是有效的。 编辑:澄清一下,Test1234应该可以工作