getFieldDecorator правила для пароля, чтобы содержать строчные буквы и цифры верхнего регистра? - PullRequest
0 голосов
/ 12 декабря 2018

Я работаю над приложением реагирования, и представления создаются с помощью Ant Design, я проверяю форму, и я не знаю, как проверить пропуск, содержащий символы верхнего и нижнего регистра и цифр.

это мое поле, которое я проверял с помощью ant Design:

                            <FormItem>
                                {getFieldDecorator('password', {
                                    rules: [{required: true, message: 'Please input your password!'}, {
                                    validator: this.validateToNextPassword,}],
                                })(
                                    <StyledInput placeholder="Password" type="password"/>
                                )}
                            </FormItem>
                            <FormItem>
                                {getFieldDecorator('Re-enterPassword', {
                                    rules: [{required: true, message: 'Please confirm your password!',}, {
                                    validator: this.compareToFirstPassword,}],
                                })(
                                    <StyledInput placeholder="Re-enter password" type="password" onBlur={this.handleConfirmBlur}/>
                                )}
                            </FormItem>

Это функции, используемые для проверки пропусков:

handleConfirmBlur = (e) => {
            const value = e.target.value;
            this.setState({ confirmDirty: this.state.confirmDirty || !!value });
        }

        compareToFirstPassword = (rule, value, callback) => {
            debugger;
            const form = this.props.form;
            if (value && value !== form.getFieldValue('password')) {
                callback('Two passwords that you enter is inconsistent!');
            } else {
                callback();
            }
        }

        validateToNextPassword = (rule, value, callback) => {
            debugger;
            const form = this.props.form;
            if (value && this.state.confirmDirty) {
                form.validateFields(['confirm'], { force: true });
            }
            callback();
        }

этот код проверяет поле пропуска, если онопусто или нет, и проверяет, похожи ли эти два пароля, но мне нужно проверить проход, чтобы он содержал строчные буквы строчные буквы и цифры.

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Валидатор в вашем коде сравнивает только два пароля.Вы должны добавить еще один валидатор в массив rules (он может принимать любое количество валидаторов)

rules: [{...yourValidator}, { message: 'Password should contain uppercase letter etc'}, validator: this.strongValidator]

и написать strongValidator функцию:

strongValidator = (rule, value, callback) => {
  if(!value.match(digitsRegex) || !value.match(uppercaseRegex)) {
    return callback(true)
  }
  callback()
}

Также вы можете использовать опцию validateFirstпрекратить проверку при первой ошибке

0 голосов
/ 12 декабря 2018

Для этого можно использовать регулярные выражения:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]+$

(?=.*[a-z]) - хотя бы одну строчную букву

(?=.*[A-Z]) - хотя бы одну заглавную букву

(?=.*\d) - хотя бы одна цифра

[a-zA-Z\d]+ - разрешены только буквы и цифры (определяет подмножество разрешенных символов)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...