正则表达式详解

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

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

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

相关推荐
Doris8938 小时前
【JS】Web APIs BOM与正则表达式详解
前端·javascript·正则表达式
视觉装置在笑71310 小时前
awk 基础知识和进阶用法
linux·运维·服务器·正则表达式
白羊无名小猪13 小时前
正则表达式(捕获组)
java·mysql·正则表达式
一晌小贪欢1 天前
【静态功能网站】正则表达式助手工具
正则表达式·html·正则·正则匹配·正则通用·正则网址·正则网站
超级大福宝1 天前
在正则表达式中匹配汉字
正则表达式
卓码软件测评2 天前
第三方软件质量检测机构:【Apifox多格式支持处理JSON、XML、GraphQL等响应类型】
前端·测试工具·正则表达式·测试用例·压力测试
j***51892 天前
Java进阶,时间与日期,包装类,正则表达式
java·mysql·正则表达式
qq_16155498922 天前
正则表达式
正则表达式
Vic101012 天前
Java正则表达式性能优化指南:编译开销、类加载与线程安全深度解析
java·性能优化·正则表达式
进击的野人3 天前
Node.js文件系统(fs模块)深度解析与实践应用
后端·正则表达式·node.js