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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • VSCode汉化_vscode汉化插件

    VSCode汉化_vscode汉化插件1.打开VSCode点击箭头指示地方在搜索框中输入chinese然后安装中文简体2.按住Ctrl+shift+p选择配置显示语言然后会看见下面的样子添加"locale&qu

  • Markdown基本语法

    Markdown基本语法

  • APP弱网测试[通俗易懂]

    APP弱网测试[通俗易懂]APP弱网测试 一、网络测试的一般流程step1:首先要考虑网络正常的情况① 各个模块的功能正常可用② 页面元素/数据显示正常step2:其次要考虑无网络的情况① APP各个功能在无网络情况下是否可用② APP各个页面之间切换是否正常③ 发送网络请求时是否会导致闪退、卡死等异常情况④ APP各个页面是否显示完整美观,未刷新的页…

  • css适配不同分辨率屏幕_html5判断分辨率

    css适配不同分辨率屏幕_html5判断分辨率最近出了很多新机,很多人在购买前会详细查看手机参数,其中“分辨率”这一项让不少人一头雾水,究竟手机分辨率是什么?对我们的使用体验有什么影响?是不是分辨率越高越好?教授估计这些问题百思特网让很多对手机了解不多的朋友产生困扰,所以今天就来为大家科普科普~一、什么是手机屏幕分辨率?图像的显示都是由许多像素点排列组成的,手机屏幕分辨率就代表着像素个数,当用手机屏幕中横向的像素点与竖向的像素点相乘的时候,再…

  • [Protel99SE]打印PDF「建议收藏」

    [Protel99SE]打印PDF「建议收藏」写在前面Protel仍然占据着不少工程师的手心,最近在接触一些产品转生产的事宜。从研发拿到一些工程资料后,需要转化出来给生产使用。于是就遇上了将Protel设计文件输出成PDF文件的问题。准备工作想要打印输出PDF文件,最方便的就是装一个PDF打印机。推荐安装Foxit阅读器,自动全安装PDF打印机。之后用任何软件做文档,想输出PDF文件,可以直接调用打印功能,然后打印到Fox

  • vue 强制清除浏览器缓存

    vue 强制清除浏览器缓存(1)最基本的方法就是,在打包的时候给每个打包文件加上hash值,一般是在文件后面加上时间戳//在vue.config.js文件中,找到output:constTimestamp=newDate().getTime()output:{//输出重构打包编译后的文件名称【模块名称.版本号.时间戳】filename:`[name].${process.env.VUE_APP_Version}.${Timestamp}.js`,chunkFilen

发表回复

您的电子邮箱地址不会被公开。

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