簡體   English   中英

帶有 Azure DevOps 任務擴展的正則表達式

[英]Regular expression with Azure DevOps task extension

我們正在使用磁盤管理更新我們的 azure 虛擬機任務擴展。 多行字段,讓用戶提供 label、字母和數據磁盤大小,並使用換行符和分號分隔項目和磁盤。 像這樣:

"數據庫磁盤";F;30

“臨時數據庫磁盤”;G;30

“日志數據庫”;H;15E

這是任務.json:

{
  "name": "NewDataDisks",
  "type": "multiLine",
  "label": "Data Disks",
  "required": false,
  "groupName": "Disks",
  "visibleRule": "AddDataDisk = true",
  "defaultValue": "\"Database Disk\";F;30\n\"Temp Database Disk\";G;30\n\"Logs Database\";H;15",
  "helpMarkDown": "Provide list of data disks with disk label, mount letters and disk capacity separated by a semicolon :\n\n \"Database Disk\";F;30\n\"Temp Database Disk\";G;30\n\"Logs Database\";H;15 \n\n Each virtual machine size has a max of data disks attached which can't be check in here. During release execution, a check will be done.",
  "validation": {
    "expression": "isMatch(value, '(^\"[a-z A-Z]+\";[a-zA-Z]{1};([1-9]+[0-9]+|[1-9]+)$)','Multiline')",
    "message": "[Enter a valid datadisks list](https://regex101.com/r/WeDgsJ/1)"
  }
}

問題是如果至少有一行匹配則驗證將通過。 但我希望每一行都完全匹配,但我很難找到如何使用正則表達式。 任何幫助將不勝感激。

謝謝。

您可以刪除'Multiline'選項(因為您需要將字符串視為整個文本,而不是逐行文本)並使用

'^"[a-z A-Z]+";[a-zA-Z];[1-9][0-9]*(?:\r?\n"[a-z A-Z]+";[a-zA-Z];[1-9][0-9]*)*$'

詳情

  • ^ - 字符串的開始
  • " - 一個"字符
  • [az AZ]+ - 一個或多個 ASCII 字母或空格
  • "; - "; substring
  • [a-zA-Z] - ASCII 字母
  • ; - 一個分號
  • [1-9][0-9]* - 一個非零數字,然后是零個或多個數字
  • (?: - 非捕獲“容器”組的開始:
    • \r?\n - CRLF 或 LF 行結尾
    • "[az AZ]+";[a-zA-Z];[1-9][0-9]* - 與上面相同的模式
  • )* - 組結束,重復零次或多次
  • $ - 字符串結尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM