匹配指定字符

只有匹配到hello才能返回true

  1. let r: RegExp = /hello/;
  2. console.log(r.test('hello')); // true

横向模糊匹配

横向模糊匹配,一个正则可匹配的字符串的长度是固定的,可以是多种情况。

  1. const reg:RegExp = /ab{2,5}c/g; // 第一个:a 第二个:2-5个b 第三个c
  2. const str:String = 'abc abbc abbbc abbbbc abbbbbc abbbbbbc'; // 第一 和最后一不会被匹配
  3. console.log(str.match(reg)); // (4) ["abbc", "abbbc", "abbbbc", "abbbbbc"]

纵向模糊匹配

纵向模糊匹配,一个正则匹配的字符,具体到某个字符时候,它可以不是某个确定的字符,可以有多中可能

  1. const reg: RegExp = /a[123]b/g; // 第一个:a 第二个:1-3 第三个:b
  2. const str:String = 'a0b a1b a2b a3b a4b'; // 头尾不会被匹配到
  3. console.log(str.match(reg)); // (3) ["a1b", "a2b", "a3b"]

贪婪匹配

g全局匹配,只要匹配到的都会返回

  1. const reg: RegExp = /\d{2,5}/g; // g全局匹配
  2. const str:String = '1 12 123 1234 12345 123456';
  3. console.log(str.match(reg)); // (5) ["12", "123", "1234", "12345", "12345"]

惰性匹配

惰性匹配,只要匹配到就返回。以下例子,虽然2-5次都行,但2个就够的时候,它将不在尝试

  1. const reg: RegExp = /\d{2,5}?/g; // ?惰性匹配,因为符合2 所有下面全部输出都是2位的
  2. const str:String = '12 123 1234 12345 123456';
  3. console.log(str.match(reg)); // (9) ["12", "12", "12", "34", "12", "34", "12", "34", "56"]

分支匹配

或者的意思 使用符号 |

  1. const reg: RegExp = /my | you/gs; // 匹配的字符满足一个条件就行
  2. const str:String = 'how are you';
  3. console.log(str.match(reg));

image.png

案例 - 10进制

  1. const reg: RegExp = /#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})/g; // 需要先查找6位的再查找3为的。
  2. const str: String = '#aaa #af0 #123435 #abc1234 #a1';
  3. console.log(str.match(reg)); // (4) ["#aaa", "#af0", "#123435", "#abc123"]