1.备选字符集—规定某一位字符的备选字符列表

  1. /* 上海,上天,上去 --替换成** */
  2. /* 备选字符集:规定某一位字符的备选字符列表
  3. 特点:多选一
  4. */
  5. var reg=/上[海,天,去]/g
  6. var str="我要去上海,我要上去东方明珠,去上天";
  7. console.log(str.replace(reg,"**")) //我要去**,我要**东方明珠,去**

例题

/*eg: 中国人民共和国成立了,中共很厉害,大中华厉害
        中国,中共,中华  --替换成666
         */ 
var reg=/中[国,共,华]/g;
var str="中国人民共和国成立了,中共很厉害,大中华厉害"
console.log(str.replace(reg,"666"))

2.连号的备选字符集

    /* 连号的备选字符集
        [0-9]
        [a-z]
        [a-zA-Z]
         */
        var str="2514675gjimgsdWEHOD";
        var reg=/[0-9]/g;
        console.log(str.replace(reg,"*"))    //*******gjimgsdWEHOD
        console.log(str.replace(/[a-z]/g,"*"))    //2514675*******WEHOD
        console.log(str.replace(/[a-z]/ig,"*"))    //2514675************
        console.log(str.replace(/[a-zA-Z]/g,"*"))  //2514675************

3.预定义字符集

\d:[0-9]数字 \w:[0-9a-zA-Z_]数字字母下划线 i:区分大小写 g:全局匹配

\s:一位空字符:空格、tab、换行 . —除了换行符以外所有的字符

  /* 预定义字符集:针对常用的备选字符集提供的简化符号
        [0-9]  \d
        [0-9a-zA-Z_]  \w
        空格   \s
        .    --除了换行符以外所有的字符
*/
         var reg=/\d/g;
         var str="25679difjdDEGHYE_";
         var t="hello    world"
         console.log(str.replace(reg,"**"))    //**********difjdDEGHYE_
         console.log(str.replace(/\w/g,"**"))    //**********************************
         console.log(t.replace(/\s/g,"**"))     //hello********world
         console.log(str.replace(/./g,"*"))     //*****************

4.量词—定字符集出现的次数

特点:默认一个量词,仅修饰左侧紧邻的字符集

4.1确定数量

test()—只要满足设定的条件就返回true,不管给的数据是否大于条件
/* 量词就是规定某一m位字符出现的次数 
        {m}      --至少m次
        {m,n}    --最少m次,可以是n次以上,只要是有n个就为true
        {m,}   m  --3次及3次以上
*/
        var reg=/\d{3,}/
        var str="14563ddges";
        console.log(reg.test(str))    //true


        var reg=/\d{3}/
        var str="1443ddges";
        console.log(reg.test(str))    //true

        var reg=/\d{3,6}/
        var s="1445856ddges";
        console.log(reg.test(s))     //true  3次及6次以上

例题

replace()—只截取满足条件的一段
/*
        {m}      --至少m次
        {m,n}    --最少m次,最多n次
        {m,}     --m次及m次以上
*/      

/* 三个数字+天
        123天
        4324254天
        */    
       var reg=/\d{3}天/g;
       var reg=/\d{3,4}天/g;
       var p="2451天地金额少了附件432天";
       console.log(p.replace(reg,"**"))   //2**地金额少了附件**

       var reg=/\d{3,4}天/g;
       var p="2451453天地金额少了附件432天";
       console.log(p.replace(reg,"**"))    //**地金额少了附件**

4.2不确定数量

test() 方法用于检测正则表达式是否匹配字符串的一部分,返回boolean值
 /* 
        +    1个,或1个以上   m>=1  {1}
        *    0个或多个     m>=0    {0,}
        ?    0,1      {0,1}
*/    

       var reg=/\d?/;
       var str="124edehsd";
       console.log(reg.test(str))  //true

5.贪婪模式和非贪婪模式

5.1贪婪模式—正则表达式默认是贪婪的,会获取满足条件最大值

var str="18945eghe";
var reg=/\d{3,6}/;
console.log(str.replace(reg,"*"))   //*eghe    取6个

5.2非贪婪模式—量词后面加?—会获取满足条件的最小值

 var str="18945eghe";
var reg=/\d{3,6}?/;
  console.log(str.replace(reg,"*"))   //*45eghe    取3个

6.匹配位置

 /* 
       ^  以什么开头,
       $  以什么结尾
       trim();   --去除前后的空格  reg=/^\s+|\s$/g
 */

何时使用:只要验证时,必须前加^,后加$!
//匹配字符串开头的所有空字符   ^\s+
//匹配字符串结尾的所有空字符   \s+$
       var str="   hello world";
       var s="hello   ";
       var t="   hello world    "
       var reg=/^\s+/;    //以空格开头就将它用*替换掉
       console.log(str.replace(reg,"*"))   //*hello world

       var s="hello   ";
       var r=/\s+$/;
       console.log(s.replace(r,"*"))     //hello*
       console.log(t.replace(/^\s+|\s$/g,"*"))   //*hello world   *

7.选择和分组

//选择
 |   读作"或"
//分组
()
 //转义字符\   转义字符后面的不会被参与运算,只是一个符号
var a ="hello\"";
console.log(a);    //hello"
 手机号:+86或0086  可有可无,最多1个
 空字符 不限制个数
      1
      3,4,5,7,8 选其一
      9位数字
(\+86|0086)?\s*1[34578]\d{9}    //+86的+就要用到转义符

8.排除

//除了abc
[^abc]