繁体   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