一些常用的功能 和 正则表达式

112 阅读2分钟

1. 获取url中"?"符后的字符串并正则匹配

    var reg = new RegExp('(^|&)参数名=([^&]*)(&|$)', 'i');
    var r = window.location.search.substr(1).match(reg);

2. 身份证格式正则表达式

var idCardReg = /^[1-9]\d{5}(19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i;

3.身份证号前两位代表的区域

var city = {
   11: '北京',
   12: '天津',
   13: '河北',
   14: '山西',
   15: '内蒙古',
   21: '辽宁',
   22: '吉林',
   23: '黑龙江 ',
   31: '上海',
   32: '江苏',
   33: '浙江',
   34: '安徽',
   35: '福建',
   36: '江西',
   37: '山东',
   41: '河南',
   42: '湖北 ',
   43: '湖南',
   44: '广东',
   45: '广西',
   46: '海南',
   50: '重庆',
   51: '四川',
   52: '贵州',
   53: '云南',
   54: '西藏 ',
   61: '陕西',
   62: '甘肃',
   63: '青海',
   64: '宁夏',
   65: '新疆',
   71: '台湾',
   81: '香港',
   82: '澳门',
   91: '国外 '
 };

4. 18位身份证需要验证最后一位校验位

    var code = '你的18位身份证号'
    code = code.split('');
   // ∑(ai×Wi)(mod 11)
   // 加权因子
   var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
   // 校验位
   var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
   var sum = 0;
   var ai = 0;
   var wi = 0;
   for (var i = 0; i < 17; i++) {
     ai = parseInt(code[i]);
     wi = factor[i];
     sum += ai * wi; // 开始计算并相加
   }

   var last = parity[sum % 11]; // 求余
   if (last.toString() !== code[17]) {
     console.log('校验没通过。。。。')
   } else {
     console.log('校验通过。。。。')
   }

5. 正则手机号匹配规则

var mPattern = /^(?:0|86|\+86)?1[3456789]\d{9}$/;

6. 用正则表达式实现html转码

function htmlEncodeByRegExp(str) {
    var s = '';
    if (str.length == 0) return '';
    s = str.replace(/&/g, '&amp;');
    s = s.replace(/</g, '&lt;');
    s = s.replace(/>/g, '&gt;');
    s = s.replace(/\s/g, '&nbsp;');
    s = s.replace(/\'/g, '&#39;');
    s = s.replace(/\"/g, '&quot;');
    s = s.replace(/“/g, '&ldquo;');
    s = s.replace(/”/g, '&rdquo;');
    return s;
  }

7. 用正则表达式实现html解码

function htmlDecodeByRegExp(str) {
    var s = '';
    if (str.length == 0) return '';
    s = str.replace(/&amp;/g, '&');
    s = s.replace(/&lt;/g, '<');
    s = s.replace(/&gt;/g, '>');
    s = s.replace(/&nbsp;/g, ' ');
    s = s.replace(/&#39;/g, "'");
    s = s.replace(/&quot;/g, '"');
    s = s.replace(/&ldquo;/g, '“');
    s = s.replace(/&rdquo;/g, '”');
    return s;
  }

8. 普通数组去重 可以去NaN,不能去重复杂数组类型

   /**
   * 普通数组去重 可以去NaN,不能去重复杂数组类型
   * @param arr
   * @returns []
   */
  function simpleUnique(arr) {
    var map = new Map();
    var newArr = [];
    arr.forEach(function (item) {
      if (!map.has(item)) {
        map.set(item, 1);
        newArr.push(item);
      }
    });
    return newArr;
  }

9. 匹配 html p 标签中的内容

let res = `<a jkads="asd">12332342</a>`.match(/<a[^>]*>([\s\S]*?)<\/a>/)


持续更新中。。。。