Проверка Antd по шаблону не вызывает ошибку

Итак, я прочитал это: Регулярное выражение работает на regex101.com , но не в продукте

Я создаю в antd следующее правило: Demo

    <Form.Item
      validateStatus={usernameError ? "error" : ""}
      help={usernameError || ""}
    >
      {getFieldDecorator("username", {
        rules: [
          { required: true, message: "Please input your username!" },
          {
            type: "regexp",
            pattern: new RegExp(
              /^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!#$%\-_=+<>])([a-zA-Z0-9!#$%\-_=+<>]+)$/
            ),
            message: `Password Pattern`
          }
        ]
      })(
        <Input
          prefix={<Icon type="user" style={{ color: "rgba(0,0,0,.25)" }} />}
          placeholder="Username"
        />
      )}
    </Form.Item>

Регулярное выражение должно соответствовать всему, что ДОЛЖНО включать по крайней мере 1 цифру, 1 букву и 1 специальный символ.

Как видно из лога, в JS регулярное выражение работает корректно, а вот в antd шаблон не работает.

Кроме того, я выполнил это и правильно добавил type="regexp"

Чего еще не хватает?


person Bobby    schedule 07.02.2020    source источник
comment
Кроме того, я последовал этому и правильно добавил type=regexp - его нужно удалить, а не добавить. Вы можете проверить прилагаемую песочницу кода там :)   -  person blueseal    schedule 09.02.2020
comment
@blueseal ах... действительно xD спасибо   -  person Bobby    schedule 10.02.2020


Ответы (1)


Вам не нужно явно упоминать type: "regexp".

Сделайте что-то вроде этого, это сработает.

rules: [
 { required: true, message: "Please input your username!" },
 {
    pattern:/^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!#$%\-_=+<>])([a-zA-Z0-9!#$%\-_=+<>]+)$/,
    message: `Password Pattern`
 }
]

Ознакомьтесь с аналогичным ответом, связанным с regex.

person blueseal    schedule 09.02.2020