【问题标题】:Flutter how to validate password input field with regexFlutter 如何使用正则表达式验证密码输入字段
【发布时间】:2022-06-15 22:41:57
【问题描述】:

我在自定义文本字段侦听器中使用正则表达式验证,以检查密码是否有效

这是我的验证码

            RegExp regexUpper = RegExp(r'^(?=.*[A-Z])$');
            RegExp regexLower = RegExp(r'^(?=.*[a-z])$');
            RegExp regexLength = RegExp(r'^.{8,}$');

            if (!regexLength.hasMatch(value.toString())) {
              return 'Пароль слишком короткий';
            }
            if (!regexLower.hasMatch(value.toString())) {
              print(value);
              return 'Пароль должен содержать хотя бы одну маленькую букву';
            }
            if (!regexUpper.hasMatch(value.toString())) {
              return 'Введите хотя бы одну заглавную букву';
            }
            return null;

regexLength 可以正常工作,但其他不能。

我做错了什么以及如何解决?

【问题讨论】:

标签: regex flutter


【解决方案1】:

您不应使用用锚点包裹的环视。

你可以解决问题

RegExp regexUpper = RegExp(r'[A-Z]');
RegExp regexLower = RegExp(r'[a-z]');
RegExp regexLength = RegExp(r'^.{8,}$');

看:^(?=.*[A-Z])$ 在字符串开头 (^) 断言当前位置,然后检查除换行符之外的零个或多个字符之后的任何位置是否有大写 ASCII 字母 ([A-Z])(如尽可能多,使用.*),然后需要字符串结尾($)(就在字符串的开头)。这是一个从不匹配任何字符串的模式示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-14
    • 2020-11-16
    • 2021-10-17
    相关资源
    最近更新 更多