Как обрабатывать проверку TextField в пароле во Flutter

Я создал страницу входа, и мне нужно добавить эти вещи к моему паролю. Как мне это сделать с сообщением о проверке?

  • Минимум 1 верхний регистр
  • Минимум 1 строчная буква
  • Минимум 1 цифровой номер
  • Минимум 1 специальный символ
  • Общий разрешающий символ ( ! @ # $ & * ~ )
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
31
0
44 924
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Вы должны использовать виджет TextFormField со свойством валидатора.

TextFormField(
   validator: (value) {
      // add your custom validation here.
      if (value.isEmpty) {
        return 'Please enter some text';
      }
      if (value.length < 3) {
        return 'Must be more than 2 charater';
      }
   },
),

Взгляните на официальные документы: https://flutter.dev/docs/cookbook/forms/validation

Как проверить верхний и нижний и специальный символы, как я упоминаю в своем вопросе?

BIS Tech 22.05.2019 12:59

вы можете использовать пакет RegExp rom dart:core: api.dartlang.org/stable/2.3.1/dart-core/RegExp-class.html

Rubens Melo 22.05.2019 13:27
Ответ принят как подходящий

Вам нужно использовать регулярное выражение для проверки структуры.

 bool validateStructure(String value){
        String  pattern = r'^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[!@#\$&*~]).{8,}$';
        RegExp regExp = new RegExp(pattern);
        return regExp.hasMatch(value);
  }

output: 

    Vignesh123! : true
    vignesh123 : false
    VIGNESH123! : false
    vignesh@ : false
    12345678? : false

Эта функция проверит, имеет ли переданное значение структуру или нет.

    var _usernameController = TextEditingController();
    String _usernameError;

    ...

    @override
    Widget build(BuildContext context) {
        return
        ...
        TextFormField(
          controller: _usernameController,
          decoration: InputDecoration(
              hintText: "Username", errorText: _usernameError),
          style: TextStyle(fontSize: 18.0),
        ),
        Container(
          width: double.infinity,
          height: 50.0,
          child: RaisedButton(
            onPressed: validate,
            child: Text(
              "Login",
              style: TextStyle(color: Colors.white),
            ),
            color: Theme.of(context).primaryColor,
            shape: RoundedRectangleBorder(
              borderRadius: BorderRadius.circular(50.0),
            ),
          ),
        ),
        ...
    }

    ...

    validate(){
        if(!validateStructure(_usernameController.text)){
            setState(() {
                _usernameError = emailError;
                _passwordError = passwordError;
            });
            // show dialog/snackbar to get user attention.
            return;
        }
        // Continue 
    }

это единственный путь к истине, Vignesh123! : true.. это тоже работа? !123viGnesh

BIS Tech 23.05.2019 09:24

Ваше регулярное выражение должно выглядеть так:

r'^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[!@#\$&*~]).{8,}$

Вот объяснение:

r'^
  (?=.*[A-Z])       // should contain at least one upper case
  (?=.*[a-z])       // should contain at least one lower case
  (?=.*?[0-9])      // should contain at least one digit
  (?=.*?[!@#\$&*~]) // should contain at least one Special character
  .{8,}             // Must be at least 8 characters in length  
$

Сопоставьте приведенное выше выражение с вашей строкой пароля. Используя этот метод-

    String? validatePassword(String value) {
    RegExp regex =
        RegExp(r'^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[!@#\$&*~]).{8,}$');
    if (value.isEmpty) {
      return 'Please enter password';
    } else {
      if (!regex.hasMatch(value)) {
        return 'Enter valid password';
      } else {
        return null;
      }
    }
  }

как проверить этот? •Common Allow Character ( ! @ # $ & * ~ )

BIS Tech 23.05.2019 07:26

"(?=.*?[!@#\$&*~])" часть регулярного выражения будет сравнивать общие символы строки вашего пароля.

Nikhat Shaikh 27.05.2019 11:18

Осторожно, инопланетяне! Объяснение не описывает одно и то же регулярное выражение. В объяснении отсутствуют некоторые символы ?.

Roc Boronat 04.02.2020 12:36

Вы можете добиться этого, используя приведенный ниже плагин флаттера.

wc_form_validators

Вы можете использовать его примерно так:

          TextFormField(
            decoration: InputDecoration(
              labelText: 'Password',
            ),
            validator: Validators.compose([
              Validators.required('Password is required'),
              Validators.patternString(r'^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[!@#\$&*~]).{8,}$', 'Invalid Password')
            ]),
          ),

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

вот полный ответ

Write a Dart program to check whether a string is a valid password. a. A password must have at least ten characters. b. A password consists of only letters and digits. c. A password must contain at least two digits.

import 'dart:io';

main() {
  var password;
  stdout.write("Enter You'r Password: ");
  password=stdin.readLineSync();

   if(password.length>=10 && !password.contains(RegExp(r'\W')) && RegExp(r'\d+\w*\d+').hasMatch(password))
   {
     print(" \n\t$password is Valid Password");
   }
   else
   {
     print("\n\t$password is Invalid Password");

   }
this is the best regx

bool passValid = RegExp("^(?=.{8,32}\$)(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#\$%^&*(),.?:{}|<>]).*").hasMatch(value);
 
if (value.isEmpty ||!passValid) 
 {
 return 'error';
 }

Другие вопросы по теме