美文网首页
正则表达式的效验和实例

正则表达式的效验和实例

作者: 你这个锤子 | 来源:发表于2019-08-14 11:04 被阅读0次

    方法介绍

    match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。
    replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。


    1,阻止在输入框里输入空格

    //在 keyup()方法里,\s 匹配任何空白字符,包括空格、制表符、换页符等等。
    .keyup(function(){
        this.value=this.value.replace(/\s+/g,'');//阻止输入空格
    })
    

    2,阻止输入非数字

    //如果输入非数字,则替换为''
    .keyup(function(){
        this.value=this.value.replace(/[^\d]/g, '');
    }
    

    3,每四位数字添加上一个空格

    .keyup(function(){
        this.value=this.value.replace(/(\d{4})(?=\d)/g, "$1 ");
    }
    

    4, 身份证号码的验证:
    十八位: ^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$
    十五位: ^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$

    /(^[1-9]\d{7}(0[1-9]|1[0-2])((0[1-9])|([12]\d)|(3[01]))\d{3}$)|(^[1-9]\d{5}(19|20|21)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$)/
    

    关于身份证号的说明:身份证号长度分为15位和18位两种

    • 15位,(据本宝宝所知的)15位的对比18位的少了出生日期的年份两位数和一位顺序码。
    • 18位,前6位为地址码,第七位至14位为出生日期码,此码由6位数改为8位数,其中年份用4位数表示,第15位至17位为顺序码,取消了顺序码中对百岁老人使用的特定编号;第十八位为校验码,主要是为了校验计算机输入公民身份证号码的前17位数字是否正确,其取值范围是0至10,当值等于10时,用罗马数字符X表示;
    实例(本例子未对15位身份证号效验):
    //输入框失去焦点的时候
    if($(this).is("#aaaa")){
         if($(this).val()===""){
             alert("持卡人身份证号不能为空");
         } else if($(this).val().length>=15){
              var regName=/(^[1-9]\d{7}(0[1-9]|1[0-2])((0[1-9])|([12]\d)|(3[01]))\d{3}$)|(^[1-9]\d{5}(19|20|21)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$)/;
              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:"国外 "};
              if($(this).val().length>18){
                  alert("字数超长,不能超过18个字");
                  return
              }
              if(!regName.test($(this).val())){
                  alert("身份证格式不正确");
              } else {
                  if($(this).val().length === 18){
                      code = $(this).val().split('');
                      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 = code[i];
                          wi = factor[i];
                          sum += ai * wi;
                      }
                      if(parity[sum % 11] != code[17].toUpperCase()){
                           alert("身份证号校验位错误");
                           return
                      }
                   }
               }
          } else {
               alert("身份证格式不正确");
          }
    }
    

    5,手机号的效验

    // 简单的校验
    /^1[3-9]\d{9}$/
    //在离开输入框的时候,.blur() 方法
    var telVal=$.trim(this.value);//去可能存在的首尾空格
    if(!regName.test(telVal){
        alert("手机号格式不正确!")
    }
    

    6,登录密码效验

    //在输入框失去焦点的时候
    if ($(this).is("#bbbb")){
        var regPass=$.trim(this.value);
        var conPass=$("#cccc").val();//确认密码的值
        var regularization=/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,30}$/;
        if(regPass==""){
            alert("登录密码不能为空!");
        } else if (regPass.length<8 || !regularization.test(this.value)){
            alert("长度8~30位字符,且为英文字母和数字的组合");
        } else if(regPass!== "" && regPass!==conPass && conPass!==""){
            alert("两次输入的密码不一致!");
        }
    }
    

    7,限制只能输入数字和字母

    .keyup({
        if($(this).is("#socialUnificationCode")){
            //判断输入框里是否有非数字字母
            if(/^[0-9a-zA-Z]+$/.test(this.value)){
                //如果输入的是非数字和字母,去除不符合字符
                this.value=this.value.replace(/[^0-9a-zA-Z]/g,'');
                console.log("**不正确");
            }
        }
    })
    

    8,限制只含有字母和数字,且最少一个数字和字母的六位字符

    /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6}$/.test(value)
    

    9,金额限制

    <input type="text" class="form-control" id="dddd" name="splitAmount"/>
    
    jQuery("#dddd").keyup(function () {
        var reg = jQuery(this).val().match(/\d{1,10}\.?\d{0,2}/);
        var txt = '';
        if (reg != null) {
            txt = reg[0];
        }
        jQuery(this).val(txt);
    }).change(function () {
        jQuery(this).keypress();
        var v = jQuery(this).val();
        if (/\.$/.test(v)) {
            jQuery(this).val(v.substr(0, v.length - 1));
        }
    });
    
    // vue 中
    let reg = e.match(/\d{1,10}\.?\d{0,2}/);
    let txt = '';
      if (reg != null) {
      txt = reg[0];
    }
    this.dataForm.amount = txt
    

    10,营业执照号
    市面上现在有2中企业营业执照注册号(统一社会信用代码),一种是15位(从2007年开始),一种是18位(从2015年开始)。

    // 验证 15 位
    reg = '/^\d{15}$/';
    // 验证 18 位
    reg = '/^(?:(?![IOZSV])[\dA-Z]){2}\d{6}(?:(?![IOZSV])[\dA-Z]){10}$/';
    // 合并
    reg = '/(^(?:(?![IOZSV])[\dA-Z]){2}\d{6}(?:(?![IOZSV])[\dA-Z]){10}$)|(^\d{15}$)/';
    

    相关文章

      网友评论

          本文标题:正则表达式的效验和实例

          本文链接:https://www.haomeiwen.com/subject/ywohjctx.html