我在 PowerShell (.NET Framework) 中開發了一個函式來從任何給定的 Azure Blob 存盤中檢索資料:到目前為止,一切都很好。
不幸的是,當涉及到驗證用戶的輸入時,我不能依賴外部模塊或庫,例如 Azure SDK for .NET 的NameValidator 類。
然而,命名和參考容器、Blob 和元資料一文深入探討了命名規則的細節,因此正則運算式模式可能會派上用場。
對于容器名稱,我想出了這個,它似乎適合:
(?=^.{3,63}$)(?!.*--)[^-][a-z0-9-]*[^-]
容器名稱
容器名稱必須是有效的 DNS 名稱,符合以下命名規則:
- 容器名稱必須以字母或數字開頭或結尾,并且只能包含字母、數字和短劃線 (-) 字符。
- 每個破折號 (-) 字符的前后必須緊跟一個字母或數字;容器名稱中不允許使用連續的破折號。
- 容器名稱中的所有字母都必須小寫。
- 容器名稱的長度必須為 3 到 63 個字符。
但是對于Blob 名稱,我無法繞過路徑段的計數:
(?=^.{1,1024}$)(?<=^|\/)(\S*?)[^\.] (?=\/|$)
注意:Azure 存盤模擬器已被棄用,因此超出了范圍。
Blob 名稱
Blob 名稱必須符合以下命名規則:
- Blob 名稱可以包含任意字符組合。
- 對于 Azure 存盤中的 Blob,Blob 名稱的長度必須至少為一個字符且不能超過 1,024 個字符。
- Azure 存盤模擬器支持最長 256 個字符的 blob 名稱。有關詳細資訊,請參閱使用 Azure 存盤模擬器進行開發和測驗。
- Blob 名稱區分大小寫。
- 保留的 URL 字符必須正確轉義。
- 包含 blob 名稱的路徑段的數量不能超過 254。路徑段是與虛擬目錄名稱相對應的連續分隔符(例如,正斜杠“/”)之間的字串。
- 注意 避免以點 (.)、正斜杠 (/) 或兩者的序列或組合結尾的 blob 名稱。任何路徑段都不應以點 (.) 結尾。
Blob 服務基于平面存盤方案,而不是分層方案。但是,您可以在 blob 名稱中指定字符或字串分隔符來創建虛擬層次結構。例如,以下串列顯示了有效且唯一的 Blob 名稱。請注意,字串可以作為 blob 名稱和同一容器中的虛擬目錄名稱有效:
/a
/a.txt
/a/b
/a/b.txt
您可以在列舉 blob 時利用分隔符。
注意:就在問這個問題之前,我發現這個可以回答我自己已經解決的問題或使用上述課程:
Azure 容器名稱正則運算式
如何驗證 Azure 存盤 blob 名稱
順便說一句,有人知道 PowerShell 使用哪種正則運算式嗎?
uj5u.com熱心網友回復:
你需要使用
^(?!.{1025})/?[^/]*[^/.](?:/[^/]*[^/.]){0,253}$
^(?=.{1,1024}$)/?[^/]*[^/.](?:/[^/]*[^/.]){0,253}$
請參閱正則運算式演示。
詳情:
^- 字串的開始(?=.{1,1024}$)- 字串應包含 1 到 1024 個字符(?!.{1025})- 字串不能包含超過 1025 個字符/?- 一個可選的/[^/]*[^/.]- 零個或多個字符/,然后是一個字符,而不是/和.(?:/[^/]*[^/.]){0,253}- 零到 253 次出現,/后跟零個或多個字符/,然后是一個字符,而不是/and.$- 字串結束。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/466613.html
標籤:正则表达式 天蓝色 电源外壳 天蓝色 blob 存储 斑点
上一篇:時態表谷歌表
