前端正则学习

JavaScript中正则

正则的功能

  • 匹配符合指定正则的字符串内容
  • 捕获匹配的字符串内容实现一些需求

正则的定义方式

JavaScrip中正则的定义方式一般就两种,一种是字面量定义,一种是创建正则对象实例定义

  • 字面量定义
  • 创建实例定义
// 字面量定义:意思就是通过一个简单的变量引用正则
var reg1 = /\d+/g;
// 创建实例定义
var reg2 = new RegEXp("\\d+")
/*两种方式的主要区别在于
前一种方式对于正则中的特殊字符不需要转义,
而后一种方式需要多加一个/进行转义。
*/

正则中的特殊字符

  • 元字符
    元字符有分为普通元字符和量词元字符
    常用的元字符都列在下面了
\转义字符(把元字符转义成在字符串中的实际含义)
^表示以某一个字符开始
$表示以某一个字符结尾
\n匹配一个换行符
.匹配出换行符以外的任意字符
*表示某个字符出现0或n次
+表示某个字符出现1或n次
表示某个字符出现0或1次
{n}表示某个字符出现n次
{n, }表示至少出现n次
{n,m}表示出现n-m次
x|yx或y其中一个字符
[xyz]x或y或z其中一个字符
[^xyz]除了xyz的任意一个字符
[a-z]a-z至间的任意字符
[^a-z]除了a-z之间的字符的任意字符
\d一个0-9至间的任意一个字符
\D与\d相反
\b匹配一个边界符
\w数字、字母、下划线中的任意字符
\s匹配一个空白符(空格,制表符、换页符)
  • 修饰符
    g、i、m
    g:global 全局匹配
    i:ignoreCase 忽略大小写匹配
    m:mutiline 多行匹配

正则中的捕获

正则捕获具有两种性质,一个就是懒惰性,另一个就是贪婪性

  • 捕获的懒惰性
    JavaScript中的正则捕获通常用exec(str)方法捕获符合要求的字符串,而这种方法每次执行只捕获符合要求的一个
  • 捕获的贪婪性
    JavaScript中的正则捕获通常用exec(str)方法捕获符合要求的字符子串都是每次捕获中最优最长的那个
// 懒惰性
var reg = /\d+/;
var str = "zhangsan2020lisi2016";
var res = reg.exec(str);  // 只捕获了2020
res = reg.exec(srr) ;  // 第二次捕获仍然还是2020
// 消除懒惰性的办法就在正则后面加一个g
var reg1 = /\d+/g;
var ret = reg.exec(str) ; // 2020
ret = reg.exec(str);  // 2016
// 贪婪性
/* 
var reg = /\d+/g;   这个正则的意思就是0-9中的数字出现至少一次,
按道理来说在捕获的过程中应该是将所有符合要求的结果都捕获到,但是正则捕获的过程中只会捕获符合的数字最长的结果,比如zhangsan2021lis   本来应该捕获 2 ,0,2,1,20,02,21,202,021,2021等结果,但是最后只会捕获2021这个结果。
*/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值