当前位置:网站首页>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
边栏推荐
- Oppo vooc fast charging circuit and protocol
- Keyword inline (inline function) usage analysis [C language]
- 【ESP32学习-2】esp32地址映射
- OSPF message details - LSA overview
- 机器学习--线性回归(sklearn)
- C语言,log打印文件名、函数名、行号、日期时间
- OPPO VOOC快充电路和协议
- Pytoch temperature prediction
- Feature of sklearn_ extraction. text. CountVectorizer / TfidVectorizer
- MySQL realizes read-write separation
猜你喜欢
随机推荐
MySQL数据库面试题
GNN的第一个简单案例:Cora分类
Those commonly used tool classes and methods in hutool
Variable star user module
高通&MTK&麒麟 手機平臺USB3.0方案對比
共用体(union)详解【C语言】
Comparison of solutions of Qualcomm & MTK & Kirin mobile platform USB3.0
Time slice polling scheduling of RT thread threads
Basic use of pytest
[template] KMP string matching
Word typesetting (subtotal)
Some concepts often asked in database interview
MP3mini播放模块arduino<DFRobotDFPlayerMini.h>函数详解
XML文件详解:XML是什么、XML配置文件、XML数据文件、XML文件解析教程
Gallery之图片浏览、组件学习
使用LinkedHashMap实现一个LRU算法的缓存
Amba, ahb, APB, Axi Understanding
Composition des mots (sous - total)
机器学习--决策树(sklearn)
程序员老鸟都会搞错的问题 C语言基础 指针和数组