正则表达式详解

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

javascript 复制代码
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));

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

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

三、选择符的使用

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

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

javascript 复制代码
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

五、转义需要好好理解

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

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

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

六、字符的边界

javascript 复制代码
//如果需要匹配网站,就必须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: 多行匹配,本意是如果在字符串中存在换行等字符,同样可进行匹配,返回完整匹配数组

javascript 复制代码
  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来使用

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

字符也有unicode文字系统属性 Script=文字系统,使用 \p{sc=Han} 获取中文字符 han为中文系统,其他语言请查看文字语言表

写到这里,突然发现有位大佬和我看的同一个视频,直接上链接,不求写了
大佬博客
视频地址

相关推荐
幼稚园的山代王3 天前
Java 正则核心 API 拆解
java·开发语言·正则表达式
马猴烧酒.3 天前
【正则表达式详解|Java】从0学习实战够用
学习·正则表达式
流㶡4 天前
Python数据分析中的正则表达式:匹配字符串与常用函数详解
正则表达式
sulikey4 天前
B站网页端弹幕屏蔽词正则表达式
正则表达式·bilibili·哔哩哔哩·屏蔽弹幕
sulikey4 天前
B站移动客户端的正则表达式屏蔽规则
正则表达式·bilibili·哔哩哔哩·弹幕屏蔽
longailk4 天前
grep正则表达式小失误
java·服务器·正则表达式
白小筠5 天前
Python之正则表达式
开发语言·python·正则表达式
m0_748248656 天前
C++正则表达式攻略:从基础到高级应用
java·c++·正则表达式
晚霞的不甘6 天前
Flutter for OpenHarmony 创意实战:打造一款炫酷的“太空舱”倒计时应用
开发语言·前端·flutter·正则表达式·前端框架·postman
晚霞的不甘7 天前
Flutter for OpenHarmony 进阶实战:打造 60FPS 流畅的物理切水果游戏
javascript·flutter·游戏·云原生·正则表达式