【问题标题】:vsts task input validationvsts 任务输入验证
【发布时间】:2018-08-06 16:38:46
【问题描述】:

我创建了一个带有某些输入的 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()”。我想知道可以在哪里完成以及如何将其与任务相关联,或者是否有任何方法可以提供正则表达式或在此处拆分值并在每个部分上运行方法。任何想法都值得赞赏。

【问题讨论】:

  • 您提到的文档有一个“isMatch”方法。不符合您的要求吗?
  • 是的。
  • 很高兴听到这个消息。 :)

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


【解决方案1】:

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

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

我在下面使用了分号分隔的网址

  "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."
      }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多