当前位置:网站首页>JS正则表达式基础知识学习
JS正则表达式基础知识学习
2022-07-06 09:17:00 【阿波次嘚】
创建正则对象
1.字面量 var t = /1/;
2. 实例化对象 var t = new RegExp(‘1’); //斜杠不用了 用引号
匹配模式(修饰符)在斜杠后面加
g – 全局匹配
i – 忽略大小写
var t = /a/i; //匹配大写A 和 小写 a
var t = new RegExp(‘a’,‘i’);
常用方法
1.正则对象提供正则方法
(1) exec(str) // 返回字符串匹配部分 匹配不到返回null
(2) test(str) //匹配指定字符串 返回true false
2.String对象提供的正则方法
(1)var z = ‘sssscaa555’.search(/a/); //返回匹配到的字符串首次出现的位置下标
(2)z = ‘sssscaa555’.match(/a/g); //以数组的形式返回第一个匹配结果 如果加g 以数组的形式返回所有结果
(3)z = ‘sssscaa555’.replace(/a/); // 把指定字符串替换 如果加g 替换所有匹配字符串
(4)z = ‘sssscaa555’.split(‘s’); //已匹配字符串为节点 分割 指定字符串 默认使用全局模式
//匹配第一个a并替换为*
/g 和 replaceAll() : 匹配所有a并替换为*
常用查找字符(根据ASCII码表来查找)
[a-z] //匹配 a到z之间的字符
[A-Z]
[0-9]
[a-c0-5A-G]
[adghj]
[^abc] //除了abc外的任意字符(在中括号内^表示取反)
\d //匹配数字字符
\D //匹配非数字字符
\w //匹配字母数字下划线
\W //匹配非字母数字下划线 等价于 [^\w]
\s //匹配空白字符
\S //匹配非空白字符 等价于 [^\s]
. //匹配除了回车之外的任意字符 (\n)
[\u4e00-\u9fa5] //匹配任意中文字符 \u代表使用16进制
子表达式
正则表达式中小括号里的表达式是子表达式 /a(d)/ 用于为后续匹配提供缓存区中的值
捕获
子表达式匹配内容放到缓存区中 这个过程叫捕获, 每获取到一个匹配字符 就放入到一个新的缓存区 我们可以对缓存区进行标号($1 $2 $3), 之所以有捕获 是因为缓存区中的数据 后续的正则匹配可以调用缓存的数据 进行更加方便的匹配。
反向引用
子表达式后面 的剩余正则要使用前面子表达式匹配的字符 这个过程叫反向引用。
‘dasdsadsaaaa’.match(/(a)\1\1\1/); // 返回 aaaa
‘12221221’.match(/(\d)(\d)\2\1/); // 返回 1221
限定符
(*)星号 匹配前面子表达式0次或多次
(+)加号 匹配前面子表达式1次或多次
? 匹配前面子表达式0次或1次
{n} 匹配n次
{n,} 至少n次
{n,m} 至少匹配n~m次 之间 超过也可以
定位符
^ 放在方括号外面=》 匹配的字符串的开始位置 字符串的第一个字符
$ 匹配的字符串的结束位置 字符串的最后一个字符
\b 匹配一个单词边界 ‘an’.match(/\ban\b/); 表示查找一个单词:an
\B 匹配非单词边界
特殊字符转义
反斜杠 正则表达式也在用,所以字符串中匹配的话要对其进行转义
~~这里只是举例子 匹配网址正则请百度
// 这里我们对反斜杠进行了转义 \/\/
/^[a-zA-Z]{
1,4}:\/\/*.[a-zA-Z]{1,6}/.test('http://www.baidu.com');
或者( | )的用法
‘sb’.match(/\b(sb|dsb)\b/g); //匹配自定义字符串
贪婪模式(匹配多的个数)
正则默认匹配多的 不匹配少的 勤劳的小蜜蜂 {}中间的匹配数字个数 默认匹配9个
非贪婪模式(匹配少的个数)
惰性匹配 优先匹配少的 加 在{}后面加? {}中间的匹配数字个数 匹配3个
预查
还没匹配到指定字符串 但是先预览一下后面的字符串
1、正向预查(断言):从左往右查
//查询 以136为开头的 手机号
' 13658542165 15236578954 13654741254'.match(/\b(?=136)\d+\b/g);
//查询 不以136为开头的 手机号 把 = 改成 !
' 13658542165 15236578954 13654741254'.match(/\b(?!136)\d+\b/g);
2、反向预查:从后右往左查
//匹配hello单词 从右往左找 匹配到了olleh 匹配到之后 再找 h后面的3然后停止
"123hello123".match(/(?<=3)hello/g);
~~视频学习推荐 b站 【黑马程序员】
https://www.bilibili.com/video/BV1uC4y187dF?spm_id_from=333.337.search-card.all.click
边栏推荐
- The first simple case of GNN: Cora classification
- Reno7 60W超级闪充充电架构
- ARM PC=PC+8 最便于理解的阐述
- Nodejs connect mysql
- Rough analysis of map file
- Principle and implementation of MySQL master-slave replication
- Some concepts often asked in database interview
- Comparison of solutions of Qualcomm & MTK & Kirin mobile platform USB3.0
- C语言函数之可变参数原理:va_start、va_arg及va_end
- OSPF message details - LSA overview
猜你喜欢
随机推荐
Raspberry pie tap switch button to use
Mall project -- day09 -- order module
冒泡排序【C语言】
Reading notes of difficult career creation
Embedded startup process
机器学习--线性回归(sklearn)
TypeScript
Machine learning -- linear regression (sklearn)
Implementation scheme of distributed transaction
Common regular expression collation
ES6语法总结--下篇(进阶篇 ES6~ES11)
Variable star user module
arduino JSON数据信息解析
Cannot change version of project facet Dynamic Web Module to 2.3.
Time slice polling scheduling of RT thread threads
List and set
Detailed explanation of Union [C language]
Contiki source code + principle + function + programming + transplantation + drive + network (turn)
Word排版(小計)
ESP8266通过arduino IED连接巴法云(TCP创客云)