正则表达式

/*正则表达式概念
  由普通字符及特殊字符组成(元字符)组成的对字符串过滤的逻辑公式
   创建方式
   1.字面量
   var reg=/abc/;
   2.构造函数
   var reg1=new RegExp("参数","i");
   var reg=new RegExp('stud1','i');
   第二个参数为可选参数,用来修饰这个正则表达式
   i表示不区分大小写
   test是正则表达式的方法
   alert(reg.test("sTuD11"));//结果为true
   如果要检测字符串(test参数中)含有这个字符串,结果为true
   
     var reg=/STUdy/ig//g表示全局匹配
     console.log(reg.test("asstudy"));
   
    var reg=/day/ig;
    console.log(
    reg.exec("good good study,Day day up")//返回类数组对象,结果:"Day",index:16
    );
    在使用exec方法时,正则表达式如果不是全局匹配,则每次从0开始匹配
    exec方法,返回一个为数组,将匹配成功的内容返回给你,如果没有结果返回为空
    console.log(reg.exec("day aday good"));//index:0
    console.log(reg.exec("day aday good"));//index:5
    console.log(reg.exec("day aday good"));//index:null
   
    var str="goole llld TMd tmdd ooff";
    var reg=new RegExp("tmd","ig");
    alert(str.replace(reg,"***"));//全局匹配,全部替换
   
    字符串的match方法,全局匹配将匹配到的结果都放到一个数组里
    var pattern=/good/ig;
    var str="gooD good nihao good hello";
    var arr=str.match(pattern);
    console.log(arr);//结果:["gooD", "good", "good"]
     var arr1=pattern.exec(str);
     console.log(arr1);
   
    //字符串的search方法,,用于查找符合正则子串的位置,只返回第一个位置
    var pattern=/good/g;
    var str='Good good good student';
    console.log(str.search(pattern));//结果:5
   
    var str="Gaod good study day";
     console.log(str.split(/good/i));//结果["Gaod ", " study day"]
     console.log(str.split(/g..d/i));//结果["", " ", " study day"]
   
     .元字符表示,除了换行之外的所有单个字符
     var reg=/g...gle/ig;
     var str="goodleg--gle";
     console.log(reg.test(str));//false
    
    *号 元字符,出现任意次(0-n)次,重复*前面的单个字符多次匹配
    var reg=/aa.*gle/i;
    var str="aaaaaabaaaagle";
    console.log(reg.test(str));//true;
    console.log(str.match(reg));
  
   //+表示至少出现一次
   var reg=/g.+gle/ig;
   var str="g.+gle";
   console.log(reg.test(str));//true
   //贪婪匹配
   //?表示0-1次表示转义,就是将特殊字符变为普通字符
   var reg=/g?gle/ig;
   var str="ggggggle";
   console.log(reg.test(str));//true
   alert(arg1);
  
   //[]表示字符出现的范围a-z
   var reg=/g[0-9a-zA-Z_]+gle/g;
   var str="g_gle+gle";
   console.log(reg.test(str));
   
   //w等价于[a-zA-Z0-9_]字母数字下划线
   //W表示非字母数字下划线
   var reg=/a\wc/g;
   var str="a\wc";
   console.log(reg.test(str));//true
  
  //d代表数字 等价于[0-9]
  var reg=/gd+g/g;
  var str="gg0gle";
  console.log(reg.test(str));//true
  
  //D{7,}匹配至少7个非数字,相当于[^0-9]{7,}
   //{3}三个  {3,5}至少三个至多五个  {,5}最多五个
   var reg=/aD{3}gle/g;
   var str="abcdgle";
   console.log(reg.test(str));
   console.log(str.match(reg));
  
  //var reg=/D{7,8}/g;
  var reg=/[^0-9]{7,}/;
  var str="1aaaaaaaa";
  console.log(reg.test(str));
  console.log(str.match(reg));
  
  var reg=/^c.+ab$/;
  var str="cbaaaaab2c2ccab";
  console.log(reg.test(str),str.match(reg),str.search(reg));
  
    //s匹配空格
    var str="good Goot gooolle lle";
    console.log(str.replace(/s/g,""));//以空字符串代替空格
   
   //可以匹配是否到了边界
   var reg=/google/g;
   var str2="aagoolea xxgooglea";
   var str="google"
   console.log(reg.test(str2));//false
   console.log(reg.test(str));//true
  
  // |代表或者的意思 匹配其中一种字符串
  var pattern=/google|baidu|bing|yahoo/;
  var str="gbaidueee";
  console.log(pattern.test(str));
 
 //()加上小括号 将内容进行分组,可以作为一个整体进行多次匹配
 //匹配分组里的内容4-8次,(必须要连续出现)
 var pattern=/(google){4,8}/g;
 var str="ggoogleggoogleggoogleggoogleooggooggleogooggle";
 console.log(pattern.test(str),str.match(pattern));
 
 //获取8..8之间的任意字符
 var pattern=/8(.*)8/g;
 var str="This is 8google8";
 console.log(str.match(pattern));//google
 console.log(RegExp.$1);//得到第一个分组里的字符
 
   var pattern=/8(.*)8/g;
   var str="This is 8google8";
   var result=str.replace(pattern,"<strong>$1</strong>");
   document.write(result);
 
 var pattern=/(.*)s(.*)/g;
 var str="baidu taobao";
 console.log(str.replace(pattern,"$2 $1"));//baidu taobao
 
 //exec 方法将匹配到的内容返回,并将()分组内的内容也放入数组中返回
 var pattern =/^([a-z]+)s([0-9]{4})$/gi;
 var str="google 2018";
 //console.log(pattern.test(str));//true
 //console.log(pattern.exec(str));//"google 2018", "google", "2018"
 console.log(pattern.exec(str)[1],RegExp.$1);//google google
  
    检查邮政编码//共6位数字第一位不能为0
    /^[1-9]d{5}$/
    检查文件压缩包//xxx.zipxxx.gzxxx.rar;
    /^w.(zip|gz|rar)$/
    删除多余空格 //
    str.replace(/s/,"");
    删除首尾空格
    str.replace(/^s+/,"");
    str.replace(/s+$/,"");
    电子邮件(xxxxx@xxxxx(.xxxx)+)
    /^w+@w+(.w+)+$/
    手机号
    /^1(3|4|5|6|7|8|9)d{9}$/
    身份证
    /^d{17}(d|X)$/
    日期(xxxx-xx-xx|xxxx/xx/xx|xxxx.xx.xx)
    /^d{2}|d{4}[-/.]d{2}[-/.]d{2}$/
    只能输入中文
    str.replace(/[^u4e00-u9fa5]/,"");
    账户名只能使用数字字母下划线,且数字不能开头,长度在6-15之间
    /^[a-zA-Z_]w{5,14}$/
    */

原文地址:https://www.cnblogs.com/xiangW/p/10657301.html