0

バージョン

vee-validate: 2.1.0-beta.2
vue: 2.5.7

説明

電子メール検証を使用しましたが、次のような有効な電子メールは考慮されません。

  • admin@gmail.com

それは考慮します:

  • admin@gmail.co
  • admin1@gmail.com
  • admin@gmail1.com
  • admin@gmail.net
  • admin@gmail.ne

コード スニペットは次のとおりです。
[<input type="email" 
    id="email" 
    name="email" 
    class="form-control" 
    placeholder="Email " 
    v-model="user.email" 
    v-validate="'required|email'" 
/> 
<span class="error-msg" v-show="errors.has('email')">{{ errors.first('email') }}</span>][1]

参照用の画像を参照してください: https://i.stack.imgur.com/Dpz4F.png

---------------[UPDATE]:---------------
メールルールをオーバーライドして、次のようにしました:

const email = {
  getMessage(field, args) {
    return `The ${field} must be a valid email`;
  },
  validate(value, args) {
    const EMAILREG = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
    
    console.log(EMAILREG.test(value));
    console.log(VeeValidate.Rules.email(value));
    return VeeValidate.Rules.email(value) || EMAILREG.test(value);;
  }
};

VeeValidate.Validator.extend('email', email);


このカスタム ルールが行っていることは、vee-validate の電子メール検証で失敗しても、regEx 検証で true であれば、それを受け入れるということです。ただし、admin@a は有効な電子メール アドレスと見なされます。

4

1 に答える 1