正则表达式详解

一、字面量创建正则表达式

let str = "wwwbaidu.coms";
let lth = /w/g;
console.log(lth.test(str));  //true
//这种方式的缺陷是不能使用变量
let lth = "u";
console.log(/lth/.test(str));  //false 这里不会将lth看成变量,而是去匹配lth
//解决方法
let lth = "u";
console.log(eval(`/${lth}/`).test(str));

二、使用对象创建正则表达式

let str = "wwwbaidu.coms";
let ts = new RegExp("u","g");  //第一个参数是正则表达式,第二个参数是当前模式
console.log(ts.test(str))  //true

三、选择符的使用

let str = "wwwbaidu.coms";
let lth = /ba|@/g;
console.log(lth.test(str))  //true  匹配ba或者@,类似于js里面的 ||

四、原子组和原子表的使用

let str = "wwwbaidu.coms";
let lth = /[w@]/g   //中括号就是原子表,表示匹配其中的某一个元素
console.log(lth.test(str))  //true

let str = "wwwbaidu.coms";
let lth = /(w@)/g   //括号就是原子组,其中的元素为一个整体,表示要完全匹配其中的元素
console.log(lth.test(str))  //false

五、转义需要好好理解

转义就是一个字符可能会有两种意义,有一个默认意义和特殊意义,需要使用\来取特殊意义

let str = "wwwbaiducoms";
let lth = /./g
console.log(lth.test(str)) //true  
//按道理str里面并没有“.”,但是结果却是true,这是因为“.”有两种含义
//一种含义是匹配除换行符之外的所有字符,一种含义就是“.”

let lth = /\./g
console.log(lth.test(str)) //false  这样就会取匹配“.”了

六、字符的边界

//如果需要匹配网站,就必须http开头,但是下面这种情况也会匹配成功
let str = "abchttps://www.baidu.com";
let lth = /(https)/g
console.log(lth.test(str))  //true

//解决方法
let lth = /^(https:\/\/www.baidu\.)(com)$/g
console.log(lth.test(str))  //false “^”表示以某个字符开始,“$”表示以某个字符结束

七、元字符

在这里插入图片描述

八、反义

在这里插入图片描述
这里只需要记一种就行了,就记元字符,取大写字母就是它的反义,比如\d是数字,那么\D就是除了数字,小技巧:/[\d\D]/这样就可以匹配所有任何的字符了,还有注意区分这里的“^”,在原子组里面代表的除了后面的元素,在表达式最前面就代表以某个字符开始

九、模式修正符

修正符 i: 忽略正则表达式中大小写匹配

修正符 g: 全局匹配,本意是对字符串进行完整匹配

修正符 m: 多行匹配,本意是如果在字符串中存在换行等字符,同样可进行匹配,返回完整匹配数组

  let str = `
      #http:@
      www.
      #baidu.com@
    `
    let lth = /^\s+#.+@$/g
    console.log(str.match(lth))   //null 这是因为会一直匹配到最后
//优化
  let str = `
      #http:@
      www.
      #baidu.com@
    `
    let lth = /^\s+#.+@$/gm
    console.log(str.match(lth))  //['\n      #http:@', '      #baidu.com@']
//将每一行当作独立的字符串,单独匹配,可以有开始和结束字符匹配

修正符 s: 单行匹配,本意是将多行字符串视为一行,换行符视为普通字符串

修正符 x: 忽略空白匹配

十、字符匹配

属性别名
/\p{L}/u来使用

//script文字系统简写为sc,sc=Han可以匹配中文,匹配其他语言,查阅下面的文字语言表
let str = "我爱你china2020!"
let lth = /\p{sc=Han}/gu
console.log(str.match(lth))  //['我', '爱', '你']

字符也有unicode文字系统属性 Script=文字系统,使用 \p{sc=Han} 获取中文字符 han为中文系统,其他语言请查看文字语言表
写到这里,突然发现有位大佬和我看的同一个视频,直接上链接,不求写了
大佬博客
视频地址

上一篇:ChatGPT指导:利用ChatGPT撰写高质量学术论文的技巧


下一篇:【Python中的正则表达式 | re模块】