正则表达式的效验和实例

2019-08-14  本文已影响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位身份证号效验):
//输入框失去焦点的时候
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}$)/';
上一篇下一篇

猜你喜欢

热点阅读