JavaScript 正则表达式相关笔记

RegExp :正则表达对象

  1. 正则表达式 : 定义字符串的组成规则。

MDN官网

1. 常用匹配

1.单个字符:[]: [a] [ab] [a-ZA-Z0-9_]
  		特殊符号代表特殊含义的单个字符:
       	\d:单个数字字符[0-9]
       	\w: 单个单词字符[a-ZA-Z0-9_]
2.量词符号:
     ? :表示出现0次或1* :表示出现0次或多次
     + :出现1次或多次

	{m,n}:表示m<=数量<=n
	m如果缺省: {,n}:最多n次
	n如果缺省: {m,}最少m次
3.开始结束符号
  ^ 开始
  $ 结尾
1.创建
   1.var reg = new RegExp("正则表达式")2.var reg = /正则表达式/;
2.方法
   test():验证指定的字符串是否符合正则定义的规范

在这里插入图片描述

案例1:JS 正则表达式 获取小括号 中括号 花括号内的内容(包含括号)

var str = "12【开始】3{xxxx}456[我的]789123[你的]456(1389090)78【结束】9";

var regex1 = /\((.+?)\)/g;   // () 小括号
var regex2 = /\[(.+?)\]/g;   // [] 中括号
var regex3 = /\{(.+?)\}/g;  // {} 花括号,大括号
var regex4 = /\【(.+?)\】/g;  // {} 中文大括号

// 输出是一个数组
console.log(str.match(regex1)); // ["(1389090)"]
console.log(str.match(regex2)); // ["[我的]", "[你的]"]
console.log(str.match(regex3)); // ["{xxxx}"]
console.log(str.match(regex4)); // ["【开始】", "【结束】"]

案例2:正则表达式匹配括号中的字符,不包括括号

(?<=exp)是以exp开头的字符串, 但不包含本身.
(?=exp)就匹配为exp结尾的字符串, 但不包含本身.

var str = "12【开始】3{xxxx}456[我的]789123[你的]456(1389090)78【结束】9";

var regex1 = /(?<=\()(.+?)(?=\))/g;   // () 小括号
var regex2 = /(?<=\[)(.+?)(?=\])/g;   // [] 中括号
var regex3 = /(?<=\{)(.+?)(?=\})/g;  // {} 花括号,大括号
var regex4 = /((?<=\【)(.+?)(?=\】))/g;  // {} 中文大括号

// 输出是一个数组
console.log(str.match(regex1)); // ["1389090"]
console.log(str.match(regex2)); // ["我的", "你的"]
console.log(str.match(regex3)); // ["xxxx"]
console.log(str.match(regex4)); // ["开始", "结束"]

在这里插入图片描述

2. 字面量创建正则 / /

在这里插入图片描述

3. 正则对象 new RegExp

在这里插入图片描述

使用变量

在这里插入图片描述

高亮替换对象

在这里插入图片描述

4. 选择符 |

在这里插入图片描述

5. 原子表[]和原子组()

原子表 []

出现啥要啥
比如[,-.21] 出现 ,-.21 都需要
在这里插入图片描述
区间匹配/[0-9]/ /[a-z]/

排除匹配 /^123/ 排除匹配字符123

匹配所有字符 /[\s\S]/ /[\d\D]/

原子组()

正则表达式中的小括号"()"。是代表分组的意思。

如果再其后面出现\1,则是代表与第一个小括号中要匹配的内容相同。
生成组编号,\2就是顺序第二个。

注意:\1必须与小括号配合使用

原子组匹配,[0]为正则匹配内容,[1]为原子组匹配内容

在这里插入图片描述

使用原子组匹配邮箱
在这里插入图片描述

原子组引用$完成替换

在这里插入图片描述

不记录分组 ?:

在这里插入图片描述

原子组别名 ?<>

在这里插入图片描述

6. 转义 \

在这里插入图片描述

7. 字符的边界^ $

在这里插入图片描述
在这里插入图片描述

8. 数字\d元字符 和 空白\s元字符

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9. \w匹配一个单字字符(字母、数字或者下划线) 囊括\d

在这里插入图片描述

10. . 点字符(小数点)匹配除换行符之外的任何单个字符

在这里插入图片描述

11. 精确匹配所有字符

在这里插入图片描述

12. i与g模式修正符

在这里插入图片描述

13. m多行搜索匹配符

在这里插入图片描述

14. 字符属性

在这里插入图片描述
当使用不确定字符集的时候 也是用u

15. lastIndex属性

lastIndex 属性用于规定下次匹配的起始位置。

上次匹配的结果是由方法RegExp.exec()RegExp.test() 找到的,它们都以 lastIndex 属性所指的位置作为下次检索的起始点。这样,就可以通过反复调用这两个方法来遍历一个字符串中的所有匹配文本。

重要事项:不具有标志 g 和不表示全局模式的 RegExp 对象不能使用 lastIndex 属性。
在这里插入图片描述

16. y模式

y 执行“粘性 (sticky)”搜索,匹配从目标字符串的当前位置开始。
在这里插入图片描述

17. s模式 允许 . 匹配换行符

18. 批量使用正则every

批量使用正则对密码校验 使用every
在这里插入图片描述

19. matchAll 全局匹配

matchAll 返回一个iterator
在这里插入图片描述

20. match和search的区别

match():方法检索返回一个字符串匹配正则表达式的结果。
search():如果匹配成功,则 search() 返回正则表达式在字符串中首次匹配项的索引;否则,返回 -1。
在这里插入图片描述
在这里插入图片描述

21. split()使用正则

在这里插入图片描述

22. $ `、$ '、$&

在这里插入图片描述

23.断言匹配

?= 先行断言,以什么结尾

?<=后行断言,以什么开始

在这里插入图片描述

?! 先行否定断言 判断后面不是什么

在这里插入图片描述

?<!后行否定断言 前面不是什么

在这里插入图片描述

小结


比如,只匹配百分号之前的数字,要写成 /\d+(?=%)/
/\d+(?=%)/.exec('100% of US presidents have been male')  // ["100"]

只匹配不在百分号之前的数字,要写成 /\d+(?!%)/ 
/\d+(?!%)/.exec('that’s all 44 of them')                 // ["44"]

只匹配美元符号之后的数字,要写成 /(?<=\$)\d+/
/(?<=\$)\d+/.exec('Benjamin Franklin is on the $100 bill')  // ["100"]

只匹配不在美元符号后面的数字
/(?<!\$)\d+/.exec('it’s is worth about €90')                // ["90"]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值