zoukankan      html  css  js  c++  java
  • 正则表达式系列第一回--基本概念及正则对象

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

    基本概念

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

    正则对象

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

    字面量形式,是我们平时最常用的,它简洁美观,大部分时间我们都在使用它,它的组成为 / 自定义规则 /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动态传入,这里是为了方便演示写成常量,在实际项目中,它可以是一个动态的传入变量。

  • 相关阅读:
    JFreeChart生成图片
    itext生成Word
    itext生成PDF
    物理模型name与comment互相转化
    表单序列化为Json(只限input)
    c#多线程同步之EventWaitHandle的应用
    C#多线程之异步编程
    Java环境变量设置
    sharepoint 2013实践
    WPF研究之道——数据驱动UI
  • 原文地址:https://www.cnblogs.com/zhangnan35/p/12404996.html
Copyright © 2011-2022 走看看