前端模拟自动解析手机号姓名地址

前端模拟自动解析手机号姓名地址

// An highlighted block
//自动识别事件

autoDiscern: function (e) {

  const name = e // 传入的内容

  //省

  var province = ["广东", "北京", "浙江", "福建", "湖北", "上海", "江苏", "天津", "河北", "山西", "内蒙古", "辽宁", "吉林", "黑龙江", "安徽", "江西", "山东", "河南", "湖南", "广西", "海南", "重庆", "四川", "贵州", "云南", "西藏", "陕西", "甘肃", "青海", "宁夏", "新疆", "台湾", "香港", "澳门"];

  //姓氏

  var familyName = ['赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈', '楮', '卫', '蒋', '沈', '韩', '杨', '朱', '秦', '尤', '许', '何', '吕', '施', '张', '孔', '曹', '严', '华', '金', '魏', '陶', '姜', '戚', '谢', '邹', '喻', '柏', '水', '窦', '章', '云', '苏', '潘', '葛', '奚', '范', '彭', '郎', '鲁', '韦', '昌', '马', '苗', '凤', '花', '方', '俞', '任', '袁', '柳', '酆', '鲍', '史', '唐', '费', '廉', '岑', '薛', '雷', '贺', '倪', '汤', '滕', '殷', '罗', '毕', '郝', '邬', '安', '常', '乐', '于', '时', '傅', '皮', '卞', '齐', '康', '伍', '余', '元', '卜', '顾', '孟', '平', '黄', '和', '穆', '萧', '尹', '姚', '邵', '湛', '汪', '祁', '毛', '禹', '狄', '米', '贝', '明', '臧', '计', '伏', '成', '戴', '谈', '宋', '茅', '庞', '熊', '纪', '舒', '屈', '项', '祝', '董', '梁', '杜', '阮', '蓝', '闽', '席', '季', '麻', '强', '贾', '路', '娄', '危', '江', '童', '颜', '郭', '梅', '盛', '林', '刁', '锺', '徐', '丘', '骆', '高', '夏', '蔡', '田', '樊', '胡', '凌', '霍', '虞', '万', '支', '柯', '昝', '管', '卢', '莫', '经', '房', '裘', '缪', '干', '解', '应', '宗', '丁', '宣', '贲', '邓', '郁', '单', '杭', '洪', '包', '诸', '左', '石', '崔', '吉', '钮', '龚', '程', '嵇', '邢', '滑', '裴', '陆', '荣', '翁', '荀', '羊', '於', '惠', '甄', '麹', '家', '封', '芮', '羿', '储', '靳', '汲', '邴', '糜', '松', '井', '段', '富', '巫', '乌', '焦', '巴', '弓', '牧', '隗', '山', '谷', '车', '侯', '宓', '蓬', '全', '郗', '班', '仰', '秋', '仲', '伊', '宫', '宁', '仇', '栾', '暴', '甘', '斜', '厉', '戎', '祖', '武', '符', '刘', '景', '詹', '束', '龙', '叶', '幸', '司', '韶', '郜', '黎', '蓟', '薄', '印', '宿', '白', '怀', '蒲', '邰', '从', '鄂', '索', '咸', '籍', '赖', '卓', '蔺', '屠', '蒙', '池', '乔', '阴', '郁', '胥', '能', '苍', '双', '闻', '莘', '党', '翟', '谭', '贡', '劳', '逄', '姬', '申', '扶', '堵', '冉', '宰', '郦', '雍', '郤', '璩', '桑', '桂', '濮', '牛', '寿', '通', '边', '扈', '燕', '冀', '郏', '浦', '尚', '农', '温', '别', '庄', '晏', '柴', '瞿', '阎', '充', '慕', '连', '茹', '习', '宦', '艾', '鱼', '容', '向', '古', '易', '慎', '戈', '廖', '庾', '终', '暨', '居', '衡', '步', '都', '耿', '满', '弘', '匡', '国', '文', '寇', '广', '禄', '阙', '东', '欧', '殳', '沃', '利', '蔚', '越', '夔', '隆', '师', '巩', '厍', '聂', '晁', '勾', '敖', '融', '冷', '訾', '辛', '阚', '那', '简', '饶', '空', '曾', '毋', '沙', '乜', '养', '鞠', '须', '丰', '巢', '关', '蒯', '相', '查', '后', '荆', '红', '游', '竺', '权', '逑', '盖', '益', '桓', '公', '万俟', '司马', '上官', '欧阳', '夏侯', '诸葛', '闻人', '东方', '赫连', '皇甫', '尉迟', '公羊', '澹台', '公冶', '宗政', '濮阳', '淳于', '单于', '太叔', '申屠', '公孙', '仲孙', '轩辕', '令狐', '锺离', '宇文', '长孙', '慕容', '鲜于', '闾丘', '司徒', '司空', '丌官', '司寇', '仉', '督', '子车', '颛孙', '端木', '巫马', '公西', '漆雕', '乐正', '壤驷', '公良', '拓拔', '夹谷', '宰父', '谷梁', '晋', '楚', '阎', '法', '汝', '鄢', '涂', '钦', '段干', '百里', '东郭', '南门', '呼延', '归', '海', '羊舌', '微生', '岳', '帅', '缑', '亢', '况', '后', '有', '琴', '梁丘', '左丘', '东门', '西门', '商', '牟', '佘', '佴', '伯', '赏', '南宫', '墨', '哈', '谯', '笪', '年', '爱', '阳', '佟', '第五', '言', '福'];

  

  var other = [];

  var nameAndaddress = '';

  var Name = '';

  var address = '';

  var phone = name.match(/((((13[0-9])|(15[^4])|(18[0,1,2,3,5-9])|(17[0-8])|(147))\d{8})|((\d3,4|\d{3,4}-|\s)?\d{7,14}))?/g);

  if (phone != null || phone != '') {

    phone = phone.toString().replace(new RegExp(",", "g"), '').replace(new RegExp(" ", "g"), '');

    other = name.split(phone);

    console.log(other);

    if (other[0] == '') {//地址在后面

      //去掉手机号剩下的

      nameAndaddress = other[1].replace(new RegExp(" ", "g"), '');

      for (var i = 0; i < province.length; i++) {

        if (nameAndaddress.indexOf(province[i]) == 0) {//第一位是省份

          for (var i = 0; i < familyName.length; i++) {

            if (nameAndaddress.lastIndexOf(familyName[i]) != -1) {//有姓氏

              console.log('有姓氏')

              var index = nameAndaddress.lastIndexOf(familyName[i]);

              //截取字符串

              //前面为地址 后面为姓氏

              address = nameAndaddress.substring(0, index);

              Name = nameAndaddress.substring(index, nameAndaddress.length);

              console.log(index);

              break;

            } else {//没有姓氏

              console.log('没有姓氏')

            }

          }

          break;

        } else if (nameAndaddress.indexOf(province[i]) == -1) {//没有省份信息

          console.log('没有省份信息')

        } else {//不在第一位

          //截取字符串

          //前面为姓名  后面为地址

          var index = nameAndaddress.indexOf(province[i]);

          Name = nameAndaddress.substring(0, index);

          address = nameAndaddress.substring(index, nameAndaddress.length);

        }

      }

    } else if (other[1] == '') {   //地址在前面

      //去掉手机号剩下的

      console.log(other[1]);

      nameAndaddress = other[0].replace(new RegExp(" ", "g"), '');

      for (var i = 0; i < province.length; i++) {

        if (nameAndaddress.indexOf(province[i]) == 0) {//第一位是省份

          for (var i = 0; i < familyName.length; i++) {

            if (nameAndaddress.lastIndexOf(familyName[i]) != -1) {//有姓氏

              console.log('有姓氏')

              var index = nameAndaddress.lastIndexOf(familyName[i]);

              //截取字符串

              //前面为地址 后面为姓氏

              Name = nameAndaddress.substring(index, nameAndaddress.length);

              address = nameAndaddress.substring(0, index);

              // console.log(address);

              // console.log(Name);

              // console.log(index);

              // console.log(Name.length);

              if(Name.length==2||Name.length==3||Name.length==4) {

                break;

              }

            } else {//没有姓氏

              console.log('没有姓氏')

              break;

            }

          }

          break;

        } else if (nameAndaddress.indexOf(province[i]) == -1) {//没有省份信息

          console.log('没有省份信息')

          break;

        } else {//不在第一位

          //截取字符串

          //前面为姓名  后面为地址

          var index = nameAndaddress.indexOf(province[i]);

          Name = nameAndaddress.substring(0, index);

          address = nameAndaddress.substring(index, nameAndaddress.length);

        }

      }

    } else {

      console.log('手机号在中间');

      console.log(other[0], other[1]);

      if(!other[1]){ return }

      if (other[0].length > other[1].length) {

        address = other[0];

        Name = other[1];

        console.log('姓名在后面');

      } else if (other[0].length < other[1].length){

        console.log('姓名在前面');

        address = other[1];

        Name = other[0];

      }

  

    }

  

  } else {

    //没有正确的手机号码

    wx.showToast({

      title: '没有正确的手机号码',

    })

  }

  // console.log(other)

  // console.log(nameAndaddress)

  // console.log(phone);

  // console.log(Name);

  // console.log(address);

  if(Name==''||phone==''){

    wx.showToast({

      title: '识别异常',

      icon: 'none'

    })

  }

  return {

    name: Name,

    phone: phone,

    address: address,

    showView: false,

  }

  // this.setData({

  //   name: Name,

  //   phone: phone,

  //   address: address,

  //   showView: false,

  // })

  },
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值