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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Laravel Homestead 的安装和使用

    Laravel Homestead 的安装和使用

    2022年3月13日
    40
  • java笔试题及答案最新(net面试题及答案2020)

    最新更新日志2018年12月28日:更新了springboot相关面试题,spring更多的内容(类别:开源框架)2019年11月14日:更新redis缓存雪崩,击穿,穿透相关面试题,更新了tomcat调优相关问题,更新了TCP三次握手四次握手问题JAVA基础JAVA中的几种基本类型,各占用多少字节?下图单位是bit,非字节1B=8bitString能被继承吗?…

    2022年4月16日
    45
  • java break continue用法_list和set的区别

    java break continue用法_list和set的区别1break用于完全结束一个循环,跳出循环体,执行循环后面的语句。2continue是跳过当次循环中剩下的语句,执行下一次循环。但其实这两句话看不出什么明显的意思,还是要通过写循环才能明白。先自己运算答案,然后分别对照正确答案。(一)执行continueMethod1(),结果应当是分析如下:i=0开始,i=7结束。(1)当i=0,接着条件判断false,执行“i=i+1”代码后,i=1,所以最后控制台输出1.第一轮循环结束(2)然后因为是for循环.

    2022年9月13日
    0
  • 怎么新建pytest的ini文件_qt读写配置文件

    怎么新建pytest的ini文件_qt读写配置文件前言pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行查看pytest.ini的配置选项pytest-h找到以下

    2022年7月29日
    5
  • modprobe命令不能用_modprobe查看已加载模块

    modprobe命令不能用_modprobe查看已加载模块modprobe命令用于智能地向内核中加载模块或者从内核中移除模块。modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。语法modprobe(选项)(参数)选项 -a或–all:载入全部的模块; -c或–show-conf:显示所有模块的设置信息; -d或–debug:使用排错模式; -l或–li.

    2025年8月2日
    0
  • String.Format使用方法[通俗易懂]

    String.Format使用方法[通俗易懂]1、作为參数多个參数intm[]=newint{a,b,c,d};string.format("{0}{1}{2}",m);一个參数privateconststr

    2022年7月3日
    58

发表回复

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

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