• 常用的正则表达式(一)


    前言

      正则表达式一直都是前端或后端的重中之重,如何用最优雅的代码实现项目的要求也是值得我们好好学习深究的,本篇文章先列举几个常用的表达式,以后有时间还会继续更新。

    一、判断手机号&&把手机号中间四位变为*

    // 判断是否为11位数手机号
    function isPhoneNumber(tel) {
      let reg =/^1[3-8]d{9}$/;
      return reg.test(tel);
    }
    // 中间四位变为*
    function filterPhone(tel){
      return tel.toString().replace(/(d{3})(d{4})(d{4})/,"$1****$3");
    }
    console.log(filterPhone(13632888888));//136****8888

    二、判断银行卡号&&更改卡号的展示&&把银行卡号除开头和结尾部分变为*(银行卡号长度不一定)

      银行卡号就简单的判断长度在16-19了,如果要增加规则也不难,相信小伙伴们都可以做到;

    // 判断银行卡号是否合规
    function checkBankCard(card){
      return /^d{16,19}$/.test(card);
    }

      这个格式我查过我写的正则是最简单快速且复用性高的,不信小伙伴们可以查查别人写的;

    // 把银行卡号改为每四位就插入-,要插入空格就换成空格
    function filterBankCard(card){
      return card.toString().replace(/(d{4})/g,"$1-").replace(/-$/,'');
    }
    console.log(filterBankCard(‘66451125998465472347’));//6645-1125-9984-6547-2347
    // 把银行卡号除了开头和结尾的四位数,中间的数字全部变为*号
    function filterBankCard2(card){
      return card.toString().replace(/^(d{4})(d*)(d{4})$/,(rs,$1,$2,$3)=>{return `${$1} ${$2.replace(/d/g,"*")} ${$3}`});
    }
    console.log(filterBankCard2('6645112599846547234'));//6645 *********** 7234

    三、把数字的整数部分变为每隔三位用逗号分隔

      例如:123456789.1234 转为 123,456,789.1234,1234567899.12345 转为 1,234,567,899.12345;

      写法有两种,第一种:纯手写正则

    // 第一种,纯手写正则
    function numSplit(num) {
      // 一开始先转字符串,然后使用replace,正则设置两个规则,$1是读取前面所有整数,$2是读取小数点及后面的数
      return num.toString().replace(/(d+)(.d)/g, (rs,$1,$2)=> {
        // 这里再设置一个规则,把前面读取到的所有整数进行分割,?=是正向前瞻,及?=为必须存在的条件,也就是d每个整数后面必须有后三位整数,满足了才给拼接,
        return $1.replace(/(d)(?=(d{3})+$)/g, (rs,$1)=> {
          return $1 + ",";
        }) + $2;//这里再把前面的.数字拼接回去
      })
    }
    // console.log(numSplit(123456789.1234));//123,456,789.1234
    // console.log(numSplit(8123456789.1234));//8,123,456,789.1234

      第二种,利用toLocaleString,toLocaleString能自动帮我们把整数部分转为逗号拼接,但是小数部分还得自己处理

    function numSplit2(num) {
      return num.toString().replace(/(d+)(.d)/g, (rs,$1,$2)=> {
        $1.toLocaleString() + $2;
      });
    }
    // console.log(numSplit(123456789.1234));//123,456,789.1234
    // console.log(numSplit(8123456789.1234));//8,123,456,789.1234

    四、邮箱验证

      规则:以数字字母开头,中间可以是多个数字字母或下划线,然后@后面是数字字母,最后是.加2-4个字母结尾

    function checkEmail(email){
      let reg =/^[a-zA-Z0-9]w*@[a-zA-Z0-9]+.[a-zA-Z]{2,4}$/;
      return reg.test(email);
    }
    console.log(checkEmail('104413fsdfd@qq.com'));//true

      如果做国际邮箱校验,要支持其他各种符号,可以将w换成[!#$%^&*...]来做严谨性判断,具体看业务需求,项目经理会告诉我们规则,稍微改改就行。

    总结

      本次分享了我们公司项目中常用的几个正则判断,下次再整理其他一些经典的正则判断给大家,如果小伙伴们有需要的,也可以把你想实现的规则私信或留言给我,我下次整理好了一起发出。

  • 相关阅读:
    开源的UML建模工具
    leetcode 559. Maximum Depth of N-ary Tree
    leetcode 9. Palindrome Number
    暗网 tor溯源困难根因——用户的请求会在分布全球的主机随机跳转三次,最终才到达服务器,这就造成了溯源的极其困难
    leetcode 374. Guess Number Higher or Lower
    RDP协议暴力破解
    清华大学 pip 源
    暴力破解研究论文
    利用ModSecurity防御暴力破解
    IRC BOT原来是利用IRC下发C&C命令——在xx云环境遇到了,恶意软件开的是6666端口
  • 原文地址:https://www.cnblogs.com/zxd66666/p/13020743.html
Copyright © 2020-2023  润新知