使用正则表达式的字符串输入的 Azdo 自定义任务扩展定义不起作用

Azdo custom task extension definition of string input with a regular expression doesn't work

我有一个使用 Typescript 实现的 Azure 自定义任务,其中 task.json 包含一个应该获得语义版本的字符串输入:

{
  "name": "version",
  "type": "string",
  "required": true,
  "label": "Version",
  "defaultValue": "",
  "helpMarkDown": "",
  "pattern": "^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$"
},

即使定义了版本的正则表达式(并且正则表达式本身是正确的并且取自语义版本的官方文档),用户仍然可以不受限制地输入他想要的任何字符串并且不会显示错误消息。

当用户输入与正则表达式不匹配的输入时,如何使输入显示错误消息?

您需要使用 validation.expression 和消息,如本例所示:

https://github.com/microsoft/azure-pipelines-tasks/blob/b0e99b6d8c7d1b8eba65d9ec08c118832a5635e3/Tasks/KubernetesManifestV0/task.json#L90

"validation": {
    "expression": "isMatch(value, '(^(([0-9]|[1-9][0-9]|100)(\.\d*)?)$)','Multiline')",
    "message": "Enter valid percentage value i.e between 0 to 100."
}

另请参阅: