【问题标题】:Vuelidate validation for comma seperated list of multiple emails多个电子邮件的逗号分隔列表的Vuelidate验证
【发布时间】:2018-09-15 18:08:57
【问题描述】:

我正在为这个表单使用 vuelidate 的电子邮件验证器:

    <div class="form-group" :class="{ 'has-error': $v.newParcel.onSiteContactEmail.$error }">
      <label for="onSiteContactEmail">OnSite Contact Email</label>
      <input type="email" name="onSiteContactEmail" id="onSiteContactEmail" class="form-control" v-model="newParcel.onSiteContactEmail" @input="$v.newParcel.onSiteContactEmail.$touch" maxlength="255">
      <span v-show="$v.newParcel.onSiteContactEmail.$error || !$v.newParcel.onSiteContactEmail.email" class="help-block">Please provide a valid OnSite Contact Email</span>
    </div>

这很好用,但不验证逗号分隔的电子邮件列表。验证器代码有一个正则表达式变量:

const emailRegex = /(^$|^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$)/

我正在尝试在我的 validations 方法中自定义它:

onSiteContactEmail: 
  {
    required: required, 
    type: email, 
    emailRegex: /(^$|^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))+$)/
  }

如果有人对此有任何想法,我将非常感激!

【问题讨论】:

    标签: javascript regex validation vue.js vuelidate


    【解决方案1】:

    您可以通过以下方式进行:

    <script>
    
    import { required, minLength, between } from 'vuelidate/lib/validators'
    
    export default {
    
      data: function () {
          ...
      },
    
      methods: {
          ...
      },
    
      validations: {
        contact: {
          firstname: {
            required,
            minLength: minLength(4)
          },
          address: {
            correctAddress (address) {
              return /[a-z]/.test(address)
            }
          }
        }
      }
    
    }
    </script>
    

    如您所见,在validations.addres 中有一个新函数,该函数用于对您的字段进行自定义验证。

    【讨论】:

      【解决方案2】:

      没关系,我刚刚创建了一个自定义验证器:

      const customEmail = value => {
        if (typeof value === 'undefined' || value === null || value === '') {
          return true
        }
        return /^[\W]*([\w+\-.%]+@[\w\-.]+\.[A-Za-z]{2,4}[\W]*,{1}[\W]*)*([\w+\-.%]+@[\w\-.]+\.[A-Za-z]{2,4})[\W]*$/.test(value)
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-14
        • 2011-09-13
        • 2017-06-10
        • 2013-10-25
        • 1970-01-01
        • 2014-06-22
        相关资源
        最近更新 更多