官网:https://www.w3school.com.cn/jsref/jsref_obj_regexp.asp
9-3 正则匹配语法 - 图1


  1. [0-9]
  2. [a-z]
  3. [A-Z]
  4. [0-9a-z]
  5. [a-zA-Z]
  6. [0-9a-zA-Z]
  7. \d //[0-9]
  8. \w //[0-9a-zA-Z_]
  9. /i代表不分大小写
  10. /g代表全局

一、备选字符集

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

备选字符集:规定某一位字符的备选字符列表
特点:多选一;
两种方法: 1、 var reg = /上[海,天,去]/g;
2、 var reg = /上海|上去|上天/g;

  1. /* 上海,上天,上去 --替换成** */
  2. var reg=/上[海,天,去]/g
  3. var str="我要去上海,我要上去东方明珠,去上天";
  4. console.log(str.replace(reg,"**")) //我要去**,我要**东方明珠,去**

例题

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

2.连号的备选字符集

  1. /* 连号的备选字符集
  2. [0-9]
  3. [a-z]
  4. [a-zA-Z]
  5. */
  6. var str="2514675gjimgsdWEHOD";
  7. var reg=/[0-9]/g;
  8. console.log(str.replace(reg,"*")) //*******gjimgsdWEHOD
  9. console.log(str.replace(/[a-z]/g,"*")) //2514675*******WEHOD
  10. console.log(str.replace(/[a-z]/ig,"*")) //2514675************
  11. console.log(str.replace(/[a-zA-Z]/g,"*")) //2514675************

二、预定义字符集

预定义字符集:针对常用的备选字符集提供的简化符号
1、. 除换行符以外的所有的字符
2、 \d [0-9]
3、\w [0-9a-zA-Z_]
4、\s 空格、tab、换行 . —除了换行符以外所有的字符

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

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

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

2.2 匹配位置 ^ $

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

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

2.3 选择和分组 () |

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

2.4.排除 ^

  1. //除了abc
  2. [^abc]

三、限定符

image.png

3.1确定数量

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

例题

replace()—只截取满足条件的一段
  1. /*
  2. {m} --至少m次
  3. {m,n} --最少m次,最多n次
  4. {m,} --m次及m次以上
  5. */
  6. /* 三个数字+天
  7. 123天
  8. 4324254天
  9. */
  10. var reg=/\d{3}天/g;
  11. var reg=/\d{3,4}天/g;
  12. var p="2451天地金额少了附件432天";
  13. console.log(p.replace(reg,"**")) //2**地金额少了附件**
  14. var reg=/\d{3,4}天/g;
  15. var p="2451453天地金额少了附件432天";
  16. console.log(p.replace(reg,"**")) //**地金额少了附件**

3.2不确定数量

test() 方法用于检测正则表达式是否匹配字符串的一部分,返回boolean值
  1. /*
  2. + 1个,或1个以上 m>=1 {1}
  3. * 0个或多个 m>=0 {0,}
  4. ? 0,1 {0,1}
  5. */
  6. var reg=/\d?/;
  7. var str="124edehsd";
  8. console.log(reg.test(str)) //true

贪婪模式和非贪婪模式

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

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

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

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