zoukankan      html  css  js  c++  java
  • 关于正则表达式RegExp



    //匹配开头 到 结尾 中文 字母 数字 小数点 - 一次或多次
    const reg2 = /^[u4e00-u9fa5a-zA-Z_d-.]+$/g
    console.log(reg2.test('12132ni你.-gng'))

     

     

     

    var regExp1 = /^(([1-9]{1}d{5})|(0{1}))(.d{4})?$/gi

     

                    开头是1到9 的数字一位,正数5为。或者 0开始的数字一位。 小数点保留4位            

     

    常用元字符串

     

    元字符说明
    d 匹配   数字
    D 匹配   非数字
    w 匹配   数字,字母,下划线
    W 匹配   任意不是字母,数字,下划线
    s 匹配   空白符
    S 匹配   任意不是空白符的字符
    . 匹配除换行符以外的任意字符
    ^ 匹配    以谁开头
    $ 匹配    以谁结尾  
     
    /r/n  换行符
     
    var reg = /d/    // 表示只要字符串中有数字,就符合要求
    var reg = /D/    // 表示只要字符串中有非数字,就符合要求

    var reg = /w/    // 表示只要字符串中有 数字/字母/下划线 就符合要求
    var reg = /W/    // 表示只要字符串中有 非数字/非字母/非下划线 就符合要求
     
    var reg = /^a/    //表示 只要字符串以a开头就符合条件
    var reg = /a$/    //表示 只要字符串以a结尾就符合条件
    var reg = /^abc$/     // 要求字符串中只能有 abc
    var reg = /^d$/        //表示 只能有一个数字
    var reg = /^a|b$/      //表示  以a开头或者以b结尾
    var reg = /^d{11}$/   //表示 字符串中只能出现11次数字
     
    var reg = /^d{3,}$/    //表示 字符串中只能出现3次或3次以上的数字
    var reg = /d{3,}/       //表示 字符串中只要包含3个或者3个以上的数字就符合要求   比如 ‘ ab123 ’
    var reg = /^d{3,5}$/  //表示  字符串中只能出现3~5次的数字
     
    var reg = /^d*$/      //表示  字符串中只能出现0~多个数字(要么什么都不写,要么只能是数字)
    var reg = /^d+$/      //表示  字符串中只能出现1~多个数字(字符串中至少要有一个数字)
    var reg = /^d?$/      //表示  字符串中 要么什么都没有,或者  只能出现一个数字
     
    var reg = /^gr[ae]y$/   或者  var reg = var reg = /^gr(a|e)y$/    //表示 匹配 gray或者grey
     
    var reg = /^[0-9]$/    //匹配从0-9的任意一个数字
    var reg = /^[0-9a-z]$/    //匹配从0-9的任意一个数字 或者 a-z的任意一个字母
     

    创建正则的方法 

       var reg = new RegExp()
       var reg = /字符/
     
     
    test()方法
    正则对象.test(字符串)  如果字符串符合正则公式,就返回true,否则返回false

     

    限定符

    限定符说明
    * 重复零次或更多次
    + 重复一次或更多次
    ? 重复零次或一次
    {n} 代表前面的字符可以出现n次
    {n,} 出现n次或更多次
    {n,m} 出现n到m次

     

     

    • [] 字符串用中括号括起来,表示匹配其中的任意一个字符,相当于或的意思([]占一个字符的位置)
    • [^] 匹配除中括号以内的内容(占一个位置,不能出现[]中的任意一个字符)
    • 转义符 (把特殊字符转义为普通字符 如 .)
    • | 或者,选择两者中的一个。注意|将左右两边分为两部分,而不管左右两边有多长多乱(会把正则分为两部分)
    • () 从两个直接量中选择一个,分组
    • eg:gr(a|e)y匹配gray和grey
    • [u4e00-u9fa5] 匹配汉字

     

     

    案例

    <script>
    // 验证手机号:    /^d{11}$/
    
    // 验证邮编:      /^d{6}$/
    
    // 匹配  138  139   186  189  170  152   135  188开头的手机号
    var reg = /^1[3578][896025]d{8}$/
    
    // 邮箱 xxx@xxx.com/cn
    var reg = /^w+@w+.(com|cn)$/
    </script>

     

     

     

     

    标志说明
    i 忽略大小写
    g 全局匹配
    gi 全局匹配+忽略大小写

     

     

     

     

    //01匹配:正则对象.test(字符串)   输出true和false
    
    //02提取:字符串.match(正则对象);
    // 提取字符串中的数字部分
    var str = "张三:1000,李四:5000,王五:8000。";
    var reg = /d+/g  //g
    console.log(str.match(reg))  // ["1000", "5000", "8000"]
    
    //03替换:字符串.replace(正则/被替换的字符,替换的字符)
    // 把字符中的,,替换为|
    var str = 'abc,efg,123,abc,123,a'
    var reg = /,|,/g
    console.log( str.replace(reg,'|') )
    
    
    </script>

     

     

    //   2. 分组
    //   数字3位.数字3位.数字3位.数字3位.数字3位
    var reg = /^d{3}.d{3}.d{3}.d{3}.d{3}$/;
    var reg = /^d{3}(.d{3}){4}$/
    console.log(reg.test('123.123.123.123.123'));
    
    
    var dateStr = '2016-1-5';
      // 正则表达式中的()作为分组来使用,获取分组匹配到的结果用RegExp.$1 $2 $3....来获取
      var reg = /(d{4})-(d{1,2})-(d{1,2})/;
      if (reg.test(dateStr)) {
        console.log(RegExp.$1);  // 2016
        console.log(RegExp.$2);  // 1
        console.log(RegExp.$3);  // 5
      }

     

    // <!-- 匹配一条正则,用来验证此规则:一个6~16位的字符串,必须同时包含有大小写字母和数字 -->
                // 不能是纯字母, 不能是纯数字,不能纯小写和数字 不能纯大写和数字
    let reg =   /^(?![a-zA-Z]+$)(?![0-9]+$)(?![a-z0-9]+$)(?![A-Z0-9]+$)[a-zA-Z0-9]{6,16}$/  
    
    // 1-10位:数字 字母 下划线组成的字符串, 必须有_ 
                //  不能是纯是数字字母
    let reg =   /(?!^[a-zA-Z0-9]+$)^w{1,10}$/  
    // 将英文字母汉字组成的字符串,用正则给英文单词加空格         
    let str = "no作no死,你能你aa",
    reg = /[a-z]+/ig
    str = str.replace(reg, value=>{
          return " " + value + " "
    }).trim()//去除字符串首尾空格
    console.log(str); //"no 作 no 死,你能你 aa"

    身份证校验正则表达式:

    var reg = /^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$|^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}([0-9]|X)$/   (身份证正则)

    邮箱校验正则表达式

     var reg = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$/   (邮箱校验正则)

    手机校验正则表达式

    var reg = /^1[34578]d{9}$/       (手机校验正则)

    必须包含 数字 字母 和 特殊字符,且不能有汉字的 校验

    /^(?=.*d)(?=.*[a-zA-Z])(?=.*[~/.!@#$%^&)*+-])[da-zA-Z~.!@#$%^&)+*-]{5,12}$/



    特殊字符校验
       const validateMessage = (rule, value, callback) => {
          if (!value) {
            callback(new Error('请输入企业全称'))
          } else {
            var reg = /^[u4e00-u9fa5_a-zA-Z0-9.·-]+$/
            var flag = reg.test(value)
            if (!flag) {
              callback(new Error('不支持特殊字符'))
            }
            callback()
          }
        }
    
    
    
     

     座机号校验规则

            tel: [
              { required: true, message: '请输入座机号', trigger: 'blur' },
              { pattern: /^0d{2,3}-d{7,8}$/, message: '正确的座机号格式,如:010-45128742', trigger: 'blur' },
              { max: 12, message: '长度最长为12位', trigger: 'blur' }
            ],
  • 相关阅读:
    HDU3625(SummerTrainingDay05-N 第一类斯特林数)
    HDU3359(SummerTrainingDay05-I 高斯消元)
    HDU2157(SummerTrainingDay05-F dp)
    HDU4565(SummerTrainingDay05-C 矩阵快速幂)
    LOJ1070(SummerTrainingDay05-B 矩阵快速幂)
    SPOJ7001(SummerTrainingDay04-N 莫比乌斯反演)
    POJ3090(SummerTrainingDay04-M 欧拉函数)
    POJ1284(SummerTrainingDay04-K 原根)
    POJ2478(SummerTrainingDay04-E 欧拉函数)
    BZOJ3884(SummerTrainingDay04-C 欧拉定理)
  • 原文地址:https://www.cnblogs.com/javascript9527/p/11488914.html
Copyright © 2011-2022 走看看