Javascript正则表达式

一、正则表达式

正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。

二、创建正则表达式的方式

  1. 字面量方式
let str = "abcd"
// 检测str是否包含字母c
/c/.test(str)  //输出true
// 检测str是否包含字母c,变量写法
let keyword = "c"
let regex = eval(`/${keyword}/`) //eval函数将字符串转成表达式
regex.test(str)
  1. Regex对象方式
let str = "abcdabcd"
// 检测str是否包含字母c
let regex = new Regex('c')
regex.test(str) // 输出true

字面量形式书写元字符时,只需要\x
构造函数方式书写元字符时,需要使用\\x

三、匹配模式

修饰符描述
i执行对大小写不敏感的匹配。
g执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
y连续全局
m执行多行匹配。
s执行单行匹配
uunicode,多字节

四、元字符

  1. 基本元字符,\代表转义
元字符描述
.查找单个任意字符,除了换行和行结束符。
\w查找数字、字母及下划线。
\W查找非单词(数字、字母和下划线)字符。
\d查找数字。
\D查找非数字字符。
\s查找空白字符。
\S查找非空白字符。
\b匹配单词边界。
\B匹配非单词边界。
\0查找 NULL 字符。
\n查找换行符。
\f查找换页符。
\r查找回车符。
\t查找制表符。
\v查找垂直制表符。
\xxx查找以八进制数 xxx 规定的字符。
\xdd查找以十六进制数 dd 规定的字符。
\uxxxx查找以十六进制数 xxxx 规定的 Unicode 字符。

五、分组

表达式描述
[abc]查找方括号之间的任何字符。
[^abc]查找任何不在方括号之间的字符。
[0-9]查找任何从 0 至 9 的数字。
[a-z]查找任何从小写 a 到小写 z 的字符。
[A-Z]查找任何从大写 A 到大写 Z 的字符。
[A-z]查找任何从大写 A 到小写 z 的字符。
(red|blue|green)查找任何指定的选项。一个整体或一个整体

圆括号()

  1. 表示一个整体
// abc d出现两次
/abcd{2}/.test("abcdd") //true
// abcd整体出现两次
/(abcd){2}/.test("abcdabcd") //true
  1. 单独捕获
let regex = /\d+(\w)\d+/
let result = regex.exec("520H025") //拿到圆括号中匹配的内容
console.log(result[0]) //输出H

当.出现在[]和()中就表示"."字符

六、限定符

用来限定元字符出现的次数
量词描述
n+匹配任何包含至少一个 n 的字符串。
n*匹配任何包含零个或多个 n 的字符串。
n?匹配任何包含零个或一个 n 的字符串。
n{X}匹配包含 X 个 n 的序列的字符串。
n{X,}X 是一个正整数。前面的模式 n 连续出现至少 X 次时匹配。
n{X,Y}X 和 Y 为正整数。前面的模式 n 连续出现至少 X 次,至多 Y 次时匹配。
n$匹配任何结尾为 n 的字符串。
^n匹配任何开头为 n 的字符串。
?=n匹配任何其后紧接指定字符串 n 的字符串。
?!n匹配任何其后没有紧接指定字符串 n 的字符串。
?<=n匹配任何紧跟指定字符串n的字符串
?<!n匹配任何前面没有指定字符串n的字符串

七、汉字与字符属性

var str = "你好Hello world1234";
console.log(str.match(/\p{L}/gu))
// 获取汉字
console.log(str.match(/\p{sc=Han}/gu))

八、正则对象的方法

  1. test 验证字符串是不是符合规则
  2. exec 截取字符串里面符合正则规则的那一部分片段
let str = "1234abcdabcd"
console.log(/abcd/.exec(str))

在这里插入图片描述
返回一个数组:
0: 截取的符合正则的片段
index:从第几个位置开始截取的
input:从哪个字符串中截取的
groups:
length:

不管有多个片段都只截取第一个片段
不管截取多少次都只截取第一个片段

贪婪模式:
当给一个符号使用限定符的时候,会尽可能多的捕获内容

let reg = /\d+/
console.log(reg.exec("abcd1234")) //输出1234

非贪婪模式
当给一个符号使用限定符的时候,会按最小值捕获内容

let reg = /\d+?/
console.log(reg.exec("abcd1234")) //输出1

九、字符串与正则表达式相关的方法

  1. search(字符串或正则)
查找符合指定规则的字符串,如果存在,则返回对应位置的索引,如果不存在则返回-1
  1. replace(字符串或正则,新的内容)
替换符合指定规则的字符串
(1). 没有全局标识符g的时候,只能替换第一个查找到的内容,返回新的替换好的字符串
(2). 有全局标识符g的时候,会把字符串中所有满足规则的内容全部替换,返回替换好的字符串
 <div>
    Herrona
  </div>

  <script>
    let keyword = "r" //高亮关键字
    let regex = eval(`/${keyword}/g`) //正则表达式
    let box = document.querySelector("div")
    box.innerHTML = box.innerHTML.replace(regex, search => {
      return `<span style="color:red">${search}</span>`;
    })
  </script>

执行结果:
在这里插入图片描述

  1. match(字符串或正则)
当正则表达式没有全局标识符g的时候,返回值与正则对象的exec方法一样
当正则表达式有全局标识符g的时候,返回一个数组,里面是所有满足条件的内容
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值