正则表达式详解

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

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为中文系统,其他语言请查看文字语言表

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

相关推荐
小白快快跑哦5 小时前
python-字符串全解(六):正则表达式-转义与非转义
python·正则表达式·转义与非转义
zx_741484812 天前
【Linux入门】Shell 函数、正则表达式与文本处理:cut 与 awk
linux·运维·正则表达式
Patrick在香港5 天前
Claude Prompt 香港场景:公文里「今日」落在 6 个日历日上,「翌日」锚错了 5 天
python·自然语言处理·正则表达式·claude·数据清洗
梦帮科技6 天前
Next.js 16 模块化单体实战:App Router、领域模块与 Route Handler 分层
css·数据结构·链表·正则表达式·node.js·json·html5
yume_sibai12 天前
正则表达式完全指南(基础语法 + 实战应用 + 性能优化 + 最佳实践)
开发语言·正则表达式·c#
研☆香13 天前
js中使用的正则表达式
开发语言·javascript·正则表达式
2601_9622935318 天前
浅学python | 正则表达式集锦
正则表达式·字符串匹配·python知识·浅学python·ip地址检查
2601_9622955818 天前
Python中正则表达式的知识汇总分享
python·正则表达式·模块·语法·匹配
启观川18 天前
Python基础-第 16 章 综合案例:客户信息管理系统
开发语言·笔记·python·正则表达式
2601_9622940518 天前
Python 操作 Word:如何查找、替换和批量修改文本
python·正则表达式·word·文档处理·查找替换