正则表达式系列第一回--基本概念及正则对象

说起正则表达式,可以说是很多同行的痛点,包括我在内,看了会,会了忘,因此写一个系列的小教程,试图加深一下印象。

基本概念

所谓正则表达式,就是一个用于匹配符合某种规则的字符串的表达式。简单来说,就是我们用表达式的形式来创建一个规则,然后拿着这个规则去不同字符串里面进行匹配,看下有没有匹配上我们规则的字符串。

正则对象

要创建正则对象,有两种方法,一是字面量,二是构造函数。

字面量形式,是我们平时最常用的,它简洁美观,大部分时间我们都在使用它,它的组成为 / 自定义规则 /gim ,首尾两个正斜杠,中间是一系列我们自己写的语法规则,末尾是修饰符。

const reg = /\d/g

在上面这个示例中,里面只创建了一个简单的规则,它由一个元字符\d组成,\d(即digital)代表一个数字。

修饰符只有三个,分别是g(global)全局匹配i(ignoreCase)忽略大小写匹配m(mutiple)多行匹配

字面量形式,一般我们吐槽它叫“转义再转义”,这种形式很少用到,它用构造函数去实例化一个正则对象,接收两个参数,第一个参数是正则文本,第二个参数是正则标志。

其中,相比于字面量形式,正则文本不需要首尾两个正斜杠/作为规则边界,其次,正则文本里面的反斜杠需要再用反斜杠\转义一下。

const reg = new RegExp(‘\\d‘, ‘g‘)

这种形式看起来非常啰嗦,好像对比字面量形式它一无是处。

但是有一种情况是必须要用到构造函数形式来实例化正则对象的,那就是:当你需要传入变量的时候

const TIMES = 3;

const reg = new RegExp(`\\d{${TIMES}}`, ‘g‘); // 相当等于const reg = new RegExp(‘\\d{3}‘, ‘g‘)

这里我们需要用一个量词来修饰\d出现了几次,假设这个出现次数需要动态传入,不是写死的,就只能用构造函数形式,上面的例子中,采用ES6的字符串模板将常量TIMES动态传入,这里是为了方便演示写成常量,在实际项目中,它可以是一个动态的传入变量。

原文地址:https://www.cnblogs.com/zhangnan35/p/12404996.html

时间: 2024-11-08 01:36:40

正则表达式系列第一回--基本概念及正则对象的相关文章

RegExp 正则对象

正则表达式:规定文本检索的内容 创建正则对象:(1) 构造函数 var reg1 = new RegExp("l");//一个参数,检索内容. var reg2 = new RegExp("l","ig");//两个参数. (2) 字面量方式 var reg3=/l/ig; //i:不区分大小写:g:全局匹配. 检索方式: var reg = /l/ig;var str = "hello";(1) reg.test(str);

前端学HTTP之报文系列第一篇——起始行

前面的话 如果说HTTP是因特网的信使,那么HTTP报文就是它用来搬东西的包裹了.HTTP报文是在HTTP应用程序之间发送的简单的格式化数据块,每条报文都包含一条来自客户端的请求,或者一条来自服务器的响应.它们由三个部分组成:由起始行.首部和实体的主体部分.本文是HTTP报文系列第一篇——起始行 报文语法 所有的HTTP报文都可以分为两类:请求报文(request message)和响应报文(response message).请求报文会向Web服务器请求一个动作,响应报文会将请求的结果返回给客

[转] 擎天哥as3教程系列第二回——性能优化

所谓性能优化主要是让游戏loading和运行的时候不卡. 一  优化fla导出的swf的体积? 1,  在flash中,舞台上的元件最多,生成的swf越大,库里面有连接名的元件越多,swf越大.当舞台上没有元件且库里面的元件没有连接名的话生成的swf最小. 2,  一个flash动画有10帧,10帧上面全部是位图和用一个位图播放器播放这10张图片谁消耗的cpu更高? 答:flash动画播放消耗性能更高,因为swf文件里虽然也是位图,但是swf里面的播放机制是能播放位图,矢量图,声音,视频等.所以

DNS系列- 1.dns基本概念介绍

DNS系列- 1.dns基本概念介绍     目录         前言         一.概述             1.名词解释             2.DNS域名结构         二.DNS域名解析             1.查询类型             2.解析类型             3.DNS服务器的类型             4.区域传输             5.解析过程             6.解析答案         三.资源记录        

正则对象与正则表达式的基础学习

正则对象与正则表达式的基础学习 正则表达式是文字匹配的工具,它更像是一个文字模版,只要符合条件的结果都会被筛选出来. 正则表达式在使用上,它依赖于正则对象提供的方法与属性,所以使用正则表达式之前要定义正则对象. 正则表达式的两种使用方式: 1. 定义正则对象 var reg = new RegExp( /regexpression/modified ) //格式一 var reg = new RegExp( 'regexpression' , 'modified' ) //格式二 2. 直接量的

HttpClient 4.3教程 第一章 基本概念

HttpClient 4.3教程 第一章 基本概念 Posted on 2013 年 10 月 9 日 1.1. 请求执行 HttpClient最基本的功能就是执行Http方法.一个Http方法的执行涉及到一个或者多个Http请求/Http响应的交互,通常这个过程都会自动被HttpClient处理,对用户透明.用户只需要提供Http请求对象,HttpClient就会将http请求发送给目标服务器,并且接收服务器的响应,如果http请求执行不成功,httpclient就会抛出异样. 下面是个很简单

正则表达式第三回--模式、分组与前瞻

贪婪的正则 正则是默认贪婪的,它会尽可能多的匹配,我想这是一个大家都知道的事实. 经典例子: '12345678'.replace(/\d{3,7}/g, '#') // 输出: #8 可以看到,规则是匹配3~7个数字,由于正则默认是贪婪模式,匹配了最大数量7个: 如果我们希望它尽可能少的匹配,也就是说一旦匹配成功就不继续匹配了,只需要在量词后面加个问号即可. '12345678'.replace(/\d{3,7}?/g, '#') // 输出: ##78 分组 我们知道,量词是作用于紧挨着它的

程序演义第一回哥伦布水杯戏权贵

2.1第一回 哥伦布水杯戏权贵,阿兰煮酒论编程 第一回介绍的故事是关于航海家哥伦布的,本质上只说了一件事:什么是程序? 程序是怎么回事,和哥伦布又有什么关系呢?说简单很简单,用两个杯子比划一下就有了.故事还要从很久以前说起,1492年10月12日,哥伦布(Christopher Columbus)发现了新大陆--美洲大陆,他是发现美洲的第一人:同样的,在电脑世界中也有许多第一,那问一个最简单的问题:第一个程序是谁发明的呢?对于这个问题,现在很难考证.但经阿兰论证,程序和哥伦布有一定的关系,不信,

[Asp.net MVC]Asp.net MVC5系列——第一个项目

目录 概述 创建第一个项目 添加控制器 总结 概述 本教程是个人一步一步学习的总结,希望能帮到正在进入ASP.Net MVC5方向的朋友,个人也是准备进入ASP.NET MVC5领域,虽然艰辛,但是乐此不彼.谁让咱喜欢编程呢?之前接触过ASP.NET MVC4,今天在看发现差别还是有的,不管是使用IDE创建方式,还是使用方式有些地方的确不一样了.手上也没有ASP.NET MVC5的教程,只能看着英文网站,一步一步摸索了.其实我是一直想使用mvc,可事与愿违啊,到目前还是使用的webform. 创