zoukankan      html  css  js  c++  java
  • 常用正则

    字符统计次数

    var str1 = 'Hello world! My name is Chang Zhenan';
    var reg1 = /(?!s)[a-z]/ig;
    var ary = [], newAry = [], obj = {};
    str1.replace(reg1, function (a) {
    	var cur = a.toLowerCase();
    	obj[cur] ? obj[cur]++ : obj[cur] = 1
    });
    for (var key in obj) {
    	ary.push(obj[key]);
    }
    var max = Math.max.apply(null, ary);
    for (key in obj) {
    	if (obj[key] === max) {
    		newAry.unshift(key,max);
    	}
    }
    console.log(newAry);
    

    从url里获取信息,保存到对象

    url一般是这种格式var url = 'http://www.zhufengpeixun.cn/index.html?name=zxt&age=28&sex=1';
    只需要匹配等号左右边的字段,且不能是[?s&=]中的任何一个,也就是给单词设置了边界条件

    function getInfoFormUrl(url) {
    	var obj = {}, reg = /([^? &=]+)=([^? &=]+)/g;
    	url.replace(reg, function (a, b,c) {
    		obj[b] = c;
    	});
    	return obj;
    }
    

    格式化时间

    var template = '{0}年{1}月{2}日 {3}时{4}分{5}秒';
    var time = '2017-3-26 18:38:4';
    var timeAry = time.split(/[- :]/g);
    var reg = /{d}/g;
    var count = 0;
    template = template.replace(reg, function () {
    	return timeAry[count++];
    });
    

    模拟Trim()

    var str2 = '   my name is czn     ';
    String.prototype.myTrim = function myTrim() {
    	return this.replace(/^s*|s*$/g, '');
    };
    

    千分符

    千分符是在整数部分从后往前数,每三位前加一个逗号
    思路就是捕获字符串中一些具有一定特性的数字,这些数字后的整数部分位数可以被3整除(直到结尾,或者是以小数结束)

    var str4 = '21345633451.23';
    var reg4 = /d(?=(?:d{3})+(?:.d+|$))/g;
    str4 = str4.replace(reg4, function (a) {
    	return a + ',';
    });
    console.log(str4);//-->21,345,633,451.23
    

    Alt text

    手机号

    var reg = /^1d{10}$/;
    

    比较正规的

    ^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])d{8}$
    

    身份证

    • 18位,前17位是数字,最后一位是数字或者X
    • 前6位:省市县
    • 第7位到第14位,出生年月日,
    • 最后4位是顺序随机码,倒数第二位代码性别
    var str = '130133199102120031';
    var reg = /^(d{6})(d{4})(d{2})(d{2})d{2}(d)(?:d|X)$/;
    console.log(str.match(reg))//-->["130133199102120031", "130133", "1991", "02", "12", "3", index: 0, input: "130133199102120031"]
    

    这样获得分组,可以利用其中的有效信息,帮用户自动填写一些信息,提高用户体验

    验证是否为有效数字

    • 正数或负数:可以以+或者-开头,或者没有任何符号开头
    • 整数或小数(如果是小数的话,必须有.且之后必须有数字)
    • 整数不能以0开头(d|[1-9]d+)一位数字或者多位数
    var reg = /^[+-]?(/d|([1-9]d+))(.d+)?$/;
    //或者
    var reg2 = /^(+|-)(/d|([1-9]d+))(.d+)?$/;
    

    验证中文

    二到四位中文

    var reg = /^[u4e00-u9fa5]{2,4}$/;
    

    用户昵称

    • 可以由数字、字母、下划线、汉字组成
    • 最长是14个英文字母或7个汉字(汉字占两个字节,也就是14个字节)
    function checkNick(nick) {
    	var reg1 = /^[u4e00-u9fa5]$/,//检测是否中文
    			reg2 = /^w$/;//检测是否为数字、字母、下划线
    	var len = null;
    	for (var i = 0; i < nick.length; i++) {
    		var cur = nick[i];
    		if (reg1.test(cur)) {
    			len += 2;
    		} else if (reg2.test(cur)) {
    			len++;
    		} else {
    			len = 0;
    			break;
    		}
    	}
    	if (len === 0 || len > 14) {
    		return false;
    	}
    	return true;
    }
    

    验证数字

    • 18-65年龄

    可以分成三段来做

    • 1[8-9]
    • [2-5]d
    • 6[0-5]
    var reg = /^((1[8-9])|([2-5]d)|(6[0-5]))$/;
    

    邮箱

    var reg = /^w+((-w+)|(.w+))*@[0-9a-zA-Z]+(.|-[0-9a-zA-Z]+)*.[0-9a-zA-Z]+$/;
    

    网上找的邮箱

    var reg2 = /w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* /
    

    vue中的

    var emailRE = /^(([^<>()[]\.,;:s@"]+(.[^<>()[]\.,;:s@"]+)*)|(".+"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/
    

    非空验证

    主要学习两个事件,一个失去光标,一个实时监听

    user.oninput = validVal;//实时监听
    user.onblur = validVal;//失去光标
    
      function validVal() {
          var regs = /^s*$/g;
          if (regs.test(this.value)){
              info.style.display = 'block';
          } else {
              info.style.display = 'none';
          }
      }
    

    匹配时间

    23:45格式

    var reg = /([01]?d|2[0-3]):([0-5]d)/;
    

    匹配IP

    var reg = /^(?!0+.0+.0+.0+$)(?:[01]?dd?|2[0-4]d|25[0-5]).(?:[01]?dd?|2[0-4]d|25[0-5]).(?:[01]?dd?|2[0-4]d|25[0-5]).(?:[01]?dd?|2[0-4]d|25[0-5])$/;
    

    双字节字符

    应用:可以计算一个字符串的长度,用正则匹配双字节,然后用aa替换

    String.prototype.len=function(){return this.replace([^x00-xff]/g,"aa").length;} 
    

    利用正则表达式限制网页表单里的文本框输入内容

    用正则表达式限制只能输入中文:

    onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,'') "onbeforepaste="clipboardData.setData(''text'',clipboardData.getData(''text'').replace(/[^u4E00-u9FA5]/g,''))" 
    

    用正则表达式限制只能输入全角字符:

    onkeyup="value=value.replace(/[^uFF00-uFFFF]/g,'') "onbeforepaste="clipboardData.setData(''text'',clipboardData.getData(''text'').replace(/[^uFF00-uFFFF]/g,''))" 
    

    用正则表达式限制只能输入数字:

    onkeyup="value=value.replace(/[^d]/g,'') "onbeforepaste= "clipboardData.setData(''text'',clipboardData.getData(''text'').replace(/[^d]/g,''))" 
    

    用正则表达式限制只能输入数字和英文:

    onkeyup="value=value.replace(/[W]/g,'') "onbeforepaste="clipboardData.setData(''text'',clipboardData.getData(''text'').replace(/[^d]/g,''
    
  • 相关阅读:
    SpringBoot集成Mybatis
    SpringBoot环境搭建
    阻止a标签的默认行为有哪几种方法
    mouseover 和mouseenter的区别;冒泡与捕获的区别;冒泡与捕获的如何阻止
    操作dom
    谷歌火狐,IE8以及其他浏览器获取页面滚动出去的距离以及封装
    return的返回值
    js进阶之js三大家族:offset,scroll,client
    固定导航栏,获取页面可视区域的大小,响应式布局,事件对象极其三大坐标系
    document.write,innerHTML,createElement三者的区别
  • 原文地址:https://www.cnblogs.com/changzhenan/p/7257927.html
Copyright © 2011-2022 走看看