正则表达式:规定字符串中字符出现规律的表达式

1 创建和匹配

1-1 创建的两种方式

new RegExp() - 了解

  1. <script>
  2. // var 变量 = new RegExp("正则表达式","匹配模式"
  3. var r = new RegExp(/a/,"g");
  4. </script>

直接字面量

  1. // var 变量 = /正则表达式/匹配模式
  2. var reg = /a/g // 两个/里面的内容表示正则表达式
  1. var str = "hellLo"
  2. var reg = /l/ig
  3. // i 忽略大小写 g 全局替换
  4. console.log(str.replace(reg,"*"));

1-2 判断是否匹配

用于检测正则表达式是否匹配字符串的一部分,返回boolean值

  1. <script>
  2. var str = 'abcdf';
  3. var reg = /abc/;
  4. console.log(reg.test(str)); //true
  5. </script>

2.字符集

2-2 备选字符集

定义:规定某一位字符的备选字符列表

  1. [ ] :规定的是某一位字符的备选字符列表
  2. 特点:必须且只能多选一
  1. var str ="上海,上天,上哪里去";
  2. var reg =/上[海天]/g
  3. console.log(str.replace(reg,"*")); //*,*,上哪里去

2-3 预定义字符集

定义:针对常用的备选字符集提供的简化符号

  1. \d [0-9] : 任意数字
  2. \w [0-9a-zA-Z_]: 任意数字、字母、下划线
  3. \s : 空格
  4. . : 表示 所有字符
  5. [A-z] : 任意字母
  1. var str = "_ashdl8976hdjs"
  2. var reg = /\d/g;
  3. var reg2 = /\w/g;
  4. console.log(str.replace(reg,"*")); // _ashdl****hdjs
  5. console.log(str.replace(reg2,"*")); // **************

2-4 转义字符

定义:遇到一些特殊的字符需要处理,可以在前面加上转义字符

  1. 在正则中 使用 \ 作为转义字符
  2. \. 表示 .
  3. \\ 表示 \
  4. \/ 表示 /

3.量词

3-1 确定数量

  1. {m} : 只出现m
  2. {m,n}: m<=reg<=n
  3. {m,} : m<=reg
  1. var pwd ="1233klshfjds" // 5-7位
  2. var reg = /[0-9]{5,7}/g
  3. var reg2 = /[0-9]{4,}/g
  4. console.log(reg.test(pwd)); // false
  5. console.log(reg2.test(pwd)) // true

3-2 不确定数量的

  1. ?: 0-1
  2. +: reg>=1
  3. *: reg>=0
  1. var str ="jksdh2"
  2. var reg = /\d+/
  3. console.log(reg.test(str));

3-3 贪婪模式和懒惰模式

3-3-1 贪婪模式

  1. // 给量词的情况下,默认取最大值,默认是贪婪的
  2. var str = "19028448askdh545"
  3. var reg = /\d{3,6}/
  4. console.log(str.replace(reg,"*")); // *48askdh545
  1. * + 限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个 ? 就可以实现非贪婪或最小匹配。

3-3-2 懒惰模式

  1. // 懒惰模式 取最小值
  2. var str = "82178212jkbcckj"
  3. var reg = /\d{3,6}?/
  4. console.log(str.replace(reg,"*")); // *78212jkbcckj

4、选择和分组

  1. //选择 |
  2. //分组 ( )
  1. var str = "哪里,哪去能发多少积分"
  2. var reg = /哪里|能发/g
  3. console.log(str.replace(reg,"*")); //*,哪去*多少积分

5、指定匹配的位置

  1. ^: 开头
  2. $: 结尾
  3. /* 严格匹配 ^reg$ */

5-1 严格匹配 ^reg$

  1. // 电话
  2. var num = "13897932473123"
  3. var reg = /^1[3-9]\d{9}$/
  4. console.log(reg.test(num));
  1. // 去除 开头的空格
  2. var a =" hello";
  3. var reg =/^\s+/;
  4. var str =a.replace(reg,"");
  5. console.log(str);

5-2 去掉字符串前后的空格

  1. // 字符串的方法: trim() 去除字符串前后的空格
  2. // 正则表达式: /^\s+|\s+$/g

6、非

  1. [^abc]: 不包含abc

只获取字母

  1. var str = "hello210874"
  2. // 只获取字母
  3. var reg = /[^a-z]/g
  4. console.log(str.replace(reg,"")); //hello

过滤标签

  1. var str = "<p>我是p标签</p>。<div>我是div</div>"
  2. var reg = /<[^<>]+>/g
  3. console.log(str.replace(reg,""));

只获取数字

  1. var str = "https://movie.douban.com/subject/1292052/"
  2. // 只获取数字
  3. var reg = /[^\d+]/g
  4. console.log(str.replace(reg,""));