二二. 正则表达式

46 阅读1分钟

二二. 正则表达式

常用方法

image-20241021101234227.png

 const message = "fdabc123 faBC323 dfABC222 A2324aaBc"
 ​
 ​
 const new1 = message.replaceAll(/abc/ig, '***')
 console.log(new1); //  fd***123 f***323 df***222 A2324a***
 ​
 let count = 0;
 const newMessage = message.replace(/abc/ig, (match) => {
    count++;
    return count <= 2 ? 'iii' : match;  // 只替换前两个 'abc'
 });
 console.log(newMessage); // fdiii123 fiii323 dfABC222 A2324aaBc
 ​
 const res1 = /abc/ig
 // test: 检测某一个字符串中是否符合正则的规则
 if (res1.test(message)) {
    console.log('符合res1规则');
 }

修饰符:

  • g:Global,匹配全部
  • i:Ignore,忽略大小写
  • m:Multiple,多行匹配

字符集:

image-20241021115320526.png

锚点

  • ^:匹配文本开头

  • $:匹配文本结尾

  • 词边界\b

    • \b是一种检查,就像^ $一样,他会检查字符串在的位置是否在词边界
 const message = 'My name is Why.'
 ​
 if (/^my/ig.test(message)) {
    console.log('以my开头');
 }
 ​
 if (/why.$/ig.test(message)) {
    console.log('以why.结尾');
 }
 ​
 if (/why/ig.test(message)) {
    console.log(111);
 }
 if (/\dwhy\d/ig.test(message)) {
    console.log(222);
 }

集合和范围

集合:

  • 比如,[eao]表示查找在三个字符a e o中的任意一个

范围:

  • []也可以包含字符范围
  • 比如,[a-z]表示匹配从a到z范围内的字母,[0-5]表示0到5的数字
  • [0-9A-F]表示两个范围:他搜索一个字符,满足数字0到9或A到F
  • \d 和 [0-9]相同
  • \w 和 [a-zA-Z0-9]相同
 // 匹配手机号前三位:要求第二位数字不能是0 1 2
 const phones = ['132', '110', '120', '155', '102']
 const phoneReg = /^1[3456789]\d/
 const filterPhones = phones.filter(item => phoneReg.test(item))
 console.log(filterPhones); // ['132', '155']
 ​
 // 简单的手机号匹配
 const reg= /^1[3-9]\d{9}$/

量词

数量{n}

  • 确切的位数:{5}
  • 某个范围的位数:{3,5}

缩写

  • +:代表 一个或多个,相当于{1,}
  • ?:代表 零个或一个,相当于{0,1},换句话说,他使得符号变得可选
  • *:代表 零个或多个,相当于{0,},也就是说,这个字符可以多次出现或者不出现