dart常用正则表达式「建议收藏」

dart常用正则表达式「建议收藏」dart常用正则表达式

大家好,又见面了,我是你们的朋友全栈君。

电话号码:1开头,后面10位数字

static bool isPhone(String input) {
    RegExp mobile = new RegExp(r"1[0-9]\d{9}$");
    return mobile.hasMatch(input);
  }
复制代码

登录密码:6~16位数字和字符组合

static bool isLoginPassword(String input) {
    RegExp mobile = new RegExp(r"(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$");
    return mobile.hasMatch(input);
  }
复制代码

登录密码:6位数字验证码

static bool isValidateCaptcha(String input) {
    RegExp mobile = new RegExp(r"\d{6}$");
    return mobile.hasMatch(input);
  }
复制代码

带校验的身份证

static bool isCardId(String cardId) {
    if (cardId.length != 18) {
      return false; // 位数不够
    }
    // 身份证号码正则
    RegExp postalCode = new RegExp(
        r'^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|[Xx])$');
    // 通过验证,说明格式正确,但仍需计算准确性
    if (!postalCode.hasMatch(cardId)) {
      return false;
    }
    //将前17位加权因子保存在数组里
    final List idCardList = ["7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7", "9", "10", "5", "8", "4", "2"];
    //这是除以11后,可能产生的11位余数、验证码,也保存成数组
    final List idCardYArray = ['1', '0', '10', '9', '8', '7', '6', '5', '4', '3', '2'];
    // 前17位各自乖以加权因子后的总和
    int idCardWiSum = 0;

    for (int i = 0; i < 17; i++) {
      int subStrIndex = int.parse(cardId.substring(i, i + 1));
      int idCardWiIndex = int.parse(idCardList[i]);
      idCardWiSum += subStrIndex * idCardWiIndex;
    }
    // 计算出校验码所在数组的位置
    int idCardMod = idCardWiSum % 11;
    // 得到最后一位号码
    String idCardLast = cardId.substring(17, 18);
    //如果等于2,则说明校验码是10,身份证号码最后一位应该是X
    if (idCardMod == 2) {
      if (idCardLast != 'x' && idCardLast != 'X') {
        return false;
      }
    } else {
      //用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码
      if (idCardLast != idCardYArray[idCardMod]) {
        return false;
      }
    }
    return true;
  }
复制代码

转载于:https://juejin.im/post/5cb986355188251b194880bc

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106871.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月21日 下午11:00
下一篇 2022年4月21日 下午11:20


相关推荐

  • Yii框架官方指南系列52——专题:性能调整

    Yii框架官方指南系列52——专题:性能调整

    2021年8月28日
    48
  • pycharm永久激活码【2021最新】

    (pycharm永久激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~23LNPMIJZT-eyJsaWNlbnNlSWQiOi…

    2022年3月29日
    94
  • 为CentOS安装防DDOS攻击软件DDoS-Deflate

    为CentOS安装防DDOS攻击软件DDoS-DeflateDDoS Deflate 是一款非常小巧的防御和减轻 DDoS 攻击的工具 它可以通过监测 netstat 来跟踪来创建大量互联网连接的 IP 地址信息 通过 APF 或 IPTABLES 禁止或阻档这些非常 IP 地址 我们可以使用 netstat 命令查看当前系统连接的状态 是否有受到 DDOS 攻击 root localhost netstat ntu awk print 5 cut d

    2026年3月26日
    2
  • PAD SET_pthread_join函数

    PAD SET_pthread_join函数padStart()方法,padEnd()方法ES2017引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全。’x’.padStart(5,’ab’)//’ababx”x’.padStart(4,’ab’)//’abax”x’.padEnd(5,’ab’)//’xabab”x’.pad

    2025年10月17日
    9
  • 使用Taiko + Gauge进行自动化测试(一)

    使用Taiko + Gauge进行自动化测试(一)初识 Taiko 先来了解一下什么是 Taiko Taiko 是一个免费的开源浏览器自动化工具 由 ThoughtWorks 开发 它是一个 node 的库 Taiko 使用 ChromeDevtoo 它是为测试现代 web 应用程序而构建的 所以对于 Taiko 来说 1 它是为测试 Web 应用而生 2 它基于 Chrome 浏览器关于 Taiko 简介中所提到的 ThoughtWorks 如果有不了解的同学

    2026年3月17日
    3
  • LINUX内核目录文件说明

    LINUX内核目录文件说明 内核空间和用户空间     在下载内核前,我们应该讨论一些重要的术语和事实。首先了解一下内核空间和用户空间    内核空间中存放的是内核代码和数据,而进程的用户空间中存放的是用户程序的代码和数据。不管是内核空间还是用户空间,它们都处于虚拟空间中。   1.内核空间    Linux内核是一个宏内核,这意味着整个操作系统都运行在内核预留的内存里。内…

    2022年7月23日
    15

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号