当前位置:网站首页>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
边栏推荐
猜你喜欢
Detailed explanation of Union [C language]
Variable star user module
Cannot change version of project facet Dynamic Web Module to 2.3.
FTP文件上传文件实现,定时扫描文件夹上传指定格式文件文件到服务器,C语言实现FTP文件上传详解及代码案例实现
Characteristics, task status and startup of UCOS III
Word排版(小計)
Mysql的索引实现之B树和B+树
Come and walk into the JVM
Pytorch four commonly used optimizer tests
I2C bus timing explanation
随机推荐
Pytoch implements simple linear regression demo
arduino获取随机数
Selective sorting and bubble sorting [C language]
PyTorch四种常用优化器测试
Stage 4 MySQL database
ESP8266通过arduino IED连接巴法云(TCP创客云)
C语言函数之可变参数原理:va_start、va_arg及va_end
RT-Thread 线程的时间片轮询调度
STM32 如何定位导致发生 hard fault 的代码段
FTP file upload file implementation, regularly scan folders to upload files in the specified format to the server, C language to realize FTP file upload details and code case implementation
Mall project -- day09 -- order module
Kaggle competition two Sigma connect: rental listing inquiries
锂电池基础知识
OPPO VOOC快充电路和协议
【ESP32学习-1】Arduino ESP32开发环境搭建
uCOS-III 的特点、任务状态、启动
树莓派 轻触开关 按键使用
Analysis of charging architecture of glory magic 3pro
Using LinkedHashMap to realize the caching of an LRU algorithm
小天才电话手表 Z3工作原理