正则表达式详解

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

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

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

相关推荐
Cloud_.8 小时前
java-正则表达式
java·开发语言·正则表达式
木人舟1 天前
正则表达式快速入门
正则表达式
BeanInJ2 天前
JAVA字符串与正则表达式
java·正则表达式
林深的林2 天前
正则表达式(2)匹配规则
正则表达式
叶域2 天前
正则表达式(复习)
大数据·python·正则表达式
运维小贺4 天前
Nginx常用的模块
运维·nginx·正则表达式
Viooocc5 天前
正则表达式
正则表达式
vvilkim5 天前
开发中常用的正则表达式规则与应用
正则表达式
林深的林7 天前
正则表达式(1)
正则表达式
ThisIsClark7 天前
【玩转正则表达式】正则表达式常用语法汇总
正则表达式