vsts任务输入验证

时间:2018-07-27 09:48:52

标签: azure-devops azure-pipelines-build-task

我用某些输入创建了VSTS任务。其中之一应该只接受以逗号分隔的电子邮件地址。如果这是一个简单的电子邮件字段,我可以像下面这样进行验证:

{
  "name": "urlField",
  "type": "string",
  "label": "URL",
  "defaultValue": "",
  "required": true,
  "helpMarkDown": "Specify URL.",
  "validation": { 
        "expression": "isUrl(value)",
        "message": "InvalidURL"
    }     
},

我提到了https://github.com/Microsoft/vsts-tasks/blob/master/docs/taskinputvalidation.mdhttps://www.npmjs.com/package/json-input-validator。 但是对于我的要求,我需要指定自定义验证器方法,例如“ isUrl()”。我想知道可以在哪里做以及如何与任务相关联,或者是否有任何方法可以在此处提供正则表达式或在此处拆分值并在每个部分运行方法。任何想法表示赞赏。

1 个答案:

答案 0 :(得分:0)

我使用正则表达式来实现这一目标。有可以进行正则表达式匹配的验证方法:

isMatch(value: string, regEx: string, regExOptions: string)

我在下面使用半冒号分隔的URL

  "validation": { 
          "expression": "isMatch(value,'^(((http|https){1}:\\/\\/([a-z0-9A-Z])+(([\\-\\.]{1}[a-z0-9A-Z]+)*)+(\\/[a-z0-9A-Z]+([\\-\\.]{1}[a-z0-9A-Z]+)*)*)(:[0-9]+){0,1})+(;(((http|https){1}:\\/\\/([a-z0-9A-Z])+(([\\-\\.]{1}[a-z0-9A-Z]+)*)+(\\/[a-z0-9A-Z]+([\\-\\.]{1}[a-z0-9A-Z]+)*)*)(:[0-9]+){0,1}))*$','IgnoreCase')",
          "message": "Each semicolon separated value must be a valid URL."
      }

及以下用于半冒号分隔的电子邮件地址:

  "validation": { 
          "expression": "isMatch(value,'^([\\w+-.%]+@[\\w-.]+\\.[A-Za-z]{2,4})+(;[\\w+-.%]+@[\\w-.]+\\.[A-Za-z]{2,4})*$','IgnoreCase')",
          "message": "Each semicolon separated value must be a valid UPN."
      }