电子邮件验证 n vuetify.js

gee*_*ika 8 vue.js vuetify.js

我有一个电子邮件字段

    <template>
  <v-form v-model="valid">
    <v-text-field
      label="Name"
      v-model="name"
      :rules="nameRules"
      :counter="10"
      required
    ></v-text-field>
    <v-text-field
      label="E-mail"
      v-model="email"
      :rules="emailRules"

    ></v-text-field>
  </v-form>
</template>
Run Code Online (Sandbox Code Playgroud)

和验证规则,例如,

 <script>
  export default {
    data: () => ({
      valid: false,
      name: '',
      nameRules: [
        v => !!v || 'Name is required',
        v => v.length <= 10 || 'Name must be less than 10 characters'
      ],
      email: '',
      emailRules: [ 
        v => /^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/.test(v) || 'E-mail must be valid'
      ]
    })
  }
</script>
Run Code Online (Sandbox Code Playgroud)

但它会在我提交表单时验证表单,只有当 email.length>0 时我才需要验证电子邮件。即电子邮件不是必填字段,但如果输入电子邮件,则必须进行验证。

也试过了,当我:rules="[emailRules.em]" 像这样在脚本中改变时

emailRules: { 
                        em:v => {
                        if(v.length > 0 && /^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/.test(v) )
                            return ''E-mail must be valid';  
                          return true;
                    }
                    }
Run Code Online (Sandbox Code Playgroud)

它总是返回真

小智 17

只需在规则开头添加条件 !v :

 emailRules: [ 
        v => !v || /^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/.test(v) || 'E-mail must be valid'
      ]
Run Code Online (Sandbox Code Playgroud)

  • 请注意,TLD 的长度可以超过 3 个字符,当前的正则表达式将拒绝它们。例如,“john.doe@company.asia”将与正则表达式不匹配,尽管 .asia 是有效的 TLD (3认同)
  • 此模式不允许在电子邮件地址中使用 + 符号,例如 test+1@gmail.com (2认同)

小智 6

看看那个..

emailRules: [ v => /.+@.+/.test(v) || 'Invalid Email address' ]
Run Code Online (Sandbox Code Playgroud)


小智 4

这对我有用。

email: value => {
      if(value.length > 0) {
      const pattern = /^(([^<>()[\]\\.,;:\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,}))$/;
      return pattern.test(value) || 'Invalid e-mail.';
      }
    }
Run Code Online (Sandbox Code Playgroud)