代码之家  ›  专栏  ›  技术社区  ›  S. N

如何在使用react时为密码输入添加更多验证

  •  0
  • S. N  · 技术社区  · 6 年前

    我正在做一个简单的用户注册页面只有3个字段,电子邮件,密码和重复密码。

    我有一些接受密码的条件,例如它不应该包含以下字母:“e”“k”“n”“m”,它应该在6到11个字母之间,而且还有更多的验证,比如第一个字母需要是国会大厦的字母,其余的小写字母。

    到目前为止,我已经用电子邮件和密码做了一个简单的react应用程序,一些验证可以工作例如长度,但我不知道如何添加其他验证,如果我知道,我认为我需要使用ASCII转换字母到数字,以便我可以做比较。

    validateField(fieldName, value) {
        let fieldValidationErrors = this.state.formErrors;
        let emailValid = this.state.emailValid;
        let passwordValid = this.state.passwordValid;
        switch(fieldName) {
          case 'email':
            emailValid = value.match(/^([\w.%+-]+)@([\w-]+\.)+([\w]{2,})$/i);
            fieldValidationErrors.email = emailValid ? '' : ' is invalid';
            break;
          case 'password':
            passwordValid = value.length >= 6 &&  value.length <= 11;
            fieldValidationErrors.password = passwordValid ? '': ' is not valid';
            //fieldValidationErrors.password = passwordValid.includes('e') ? '': 'contains i';
            break;
          default:
            break;
        }
        this.setState({formErrors: fieldValidationErrors,
                        emailValid: emailValid,
                        passwordValid: passwordValid
                      }, this.validateForm);
      }
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Anurag Awasthi    6 年前

    function check(value){
      return (value.length >= 6 &&  value.length <= 11) && (value.match(/[e,k,n,m]/) === null) || /^[A-Z][a-z]+$/.test(value)
    }
    
    console.log(check("asdfg"))
    console.log(check("Asdfg"))
    console.log(check("aDdfg"))
    console.log(check("Asdfgee"))

    这包括你的三张支票,

    var passwordValid = (value.length >= 6 &&  value.length <= 11) && (value.match(/[e,k,n,m]/) === null) || /^[A-Z][a-z]+$/.test(value)