首页 > 其他分享 >正则表达式

正则表达式

时间:2023-03-08 16:22:05浏览次数:33  
标签:字符 匹配 正则表达式 括号 date const

正则表达式

  • 正则表达式解释:正则表达式(英语:regular Expression, 常简写为regex、regexp或RE),又称正则表达式、正则表示法、规则表达式、常规表示法,是计算机的一个概念。

    • 正则表达式使用单个字符来描述,匹配一系列匹配某个句法规则的字符串。许多程序设计语言都支持正则表达式进行字符串操作
  • 简单概况:正则表达式是一种字符串匹配利器,可以帮助我们搜索,获取,代替字符串;

  • 在javascript中,正则表达式使用RegExp类来创建,也有对应的字面量的方式;

    • 正则表达式主要由两部分组成:模式(patterns)和修饰符(flags)  
    • 1    const re1 = new RegExp("abc");
      2       const re2 = /abc/;//字面量
  •  正则表达式的使用方法

  • 修饰符flag的使用

    • 常见的修饰符:g:全部、全部匹配;i:忽略大小写;m:多行匹配;
  • 规则-字符类(反向类把字母都变成大写)

    • 字符类是一个特殊的符合,匹配特定集中的任何符合。
    • \d:数字从0到9的字符。
    • \s:空格符号:包括空格,制表符\t,换行符\n其他少数稀有字符
    • \w:“单字”字符:拉丁字母或者数字下划线—
    • .(点):点.是一种特殊字符,他除了换行符,可以匹配任何字符
  • 规则-锚点

    • 符号^和符号$在正则表达式中具有特殊意义,他们被称为“锚点”;
    • 符号^匹配文本开头。
    • 符号$匹配文本末尾。 
    • 词边界:\b是一种检查,就像^和$一样,它会检查字符串中的位置是否是词边界。(就是词的两边是否有东西),词边界测试\b检查位置的一侧是否匹配\w,而另一侧则不匹配“\w”
  • 规则—转义

    • 如果要想把特殊字符作为常规字符来使用,需要对其进行转义:只需要在它的前面加个反斜杠就可以了
    • 常见需要转义的字符:[]、\、$、.、|、?、*、+、()、
  • 集合(sets)和范围(ranges)

    • 在方括号[....]中的几个字符或者字符类意味着“搜索给定的字符中的任意一个”;
    • 集合
      • 例如[qwe]意味着查找3个字符中的任意一个;
    • 范围
      • 方括号也可以包含字符范围
      • 比如[a-z],[0-5];
      • [0-9A-F]表示两个范围;
      • \d和[0-9]相同;
      • \w-和[a-zA-Z0-9]相同;
    • 排除范围在普通[]范围l前面加上^;[]里面最前面
  • 量词

    • 用来形容我们所需要的数量的词被称为量词
    • 数量
      • 确切的位数:{5};5位数
      • 某个范围的位数:{3,5}
    • 缩写
      • +:代表“一个或多个”,相当于{1,}
      • ?:代表“零个或一个”,相当于{0,1},换句话说,它使得符号变得可选;
      • *:代表“零个或者多个”,相当于{0,}也就是说,这个字符可以出现多次,或者不出现
  • 贪婪(Greedy)和惰性(lazy)模式

    • 贪婪模式是默认模式,匹配规则是查找到匹配的内容后会继续向后查找一直找到最后一个匹配的内容。.+
    • 惰性模式是.+?:只要获取对应的内容,就不再继续向后匹配;就在量词后面加一个?来启动惰性模式  
  • 捕获组

    • 模式的一部分可以用括号括起来(...),这称为“捕获组”,
    • 它允许匹配的一部分作为结果数组中的单独项;
    • 它将括号视为一个整体;
    • 方法str.match(regexp),如果regexp没有g标志,将查找第一个匹配并将它作为一个数组返回:
      •  在索引0处:完全匹配
      • 在索引1处:第一个括号内容
      • 在索引2处:第二个括号内容
      •  
  • 命名组
    • 用数字记录很困难。给括号起个名字,在开始括号之后立即放置?<name>来完成的。
  • 非捕获组
    • 有时我们需要括号才能正确的对应量词,但是我们不希望他们的内容出现在结果中
    • 可以通过在开头添加?:来排除组。
  • or是正则表达式中的一个术语,实际上是一个简单的或。
    • 在正则表达式中,它用竖线  |  表示;
    • 通常会和捕获组一起来使用,其中表示多个值;
  • 时间格式化
    •  
       1  function datetime(timestamp, fmtst) {
       2         //封装时间工具
       3         const date = new Date(timestamp); //将时间戳转为时间
       4         const date0 = {
       5           //为了方便一一对应,把正则转换成键名
       6           "y+": date.getFullYear(),
       7           "M+": date.getMonth() + 1,
       8           "d+": date.getDate(),
       9           "h+": date.getHours(),
      10           "m+": date.getMinutes(),
      11           "s+": date.getSeconds(),
      12         };
      13         for (const key in date0) {
      14           //遍历对象
      15           const keyre = new RegExp(key); //因为多次使用正则,把正则变为常量
      16 
      17           if (keyre.test(fmtst)) {
      18             //判断传入的格式是否跟正则一致
      19             const value = (date0[key] + "").padStart(2, "0"); //将日期转为字符串,然后个位数补零
      20             fmtst = fmtst.replace(keyre, value); //替换字符串格式
      21           }
      22         }
      23         return fmtst; //输出最终结果
      24       }
      25 
      26       h2.textContent = datetime(1685404800000, "yyy-MMM-dd hh:mm:ss"); //传入时间戳跟时间格式

标签:字符,匹配,正则表达式,括号,date,const
From: https://www.cnblogs.com/ffhyy/p/17189806.html

相关文章

  • 记录一下C#中使用正则表达式
    privatestaticvoidMain(string[]arg){vartext="";//文本读取器using(TextReaderreader=newStreamR......
  • 常用正则表达式
     1、数字1、数字:^[0-9]*$2、n位的数字:^\d{n}$3、至少n位的数字:^\d{n,}$4、m-n位的数字:^\d{m,n}$5、零和非零开头的数字:^(0|[1-9][0-9]*)$6、非零开头的最多......
  • C# 正则表达式(Regex)
    C#正则表达式(Regex) 正则表达式是形成搜索模式的一系列字符。正则表达式可用于检查字符串是否包含指定的搜索模式。也可以进行字符串的替换和提取。本文主要......
  • 正则表达式(重点)
    正则表达式是一种对字符串操作的逻辑共识,就是用事先定义好的字符以及这些字符的特定组合组成一个”规则字符串“,这个“规则字符串”用来对字符串进行过滤,简单来说就是一种......
  • php 正则表达式匹配(输出是否匹配以及匹配值) preg_match
    preg_match—执行一个正则表达式匹配preg_match($pattern,$subject,$matches)搜索subject与pattern给定的正则表达式的一个匹配.参数:pattern:要搜索的模式,字符......
  • 滚蛋吧,正则表达式!
    大家好,我是良许。不知道大家有没有被正则表达式支配过的恐惧?看着一行火星文一样的表达式,虽然每一个字符都认识,但放在一起直接就让人蒙圈了~你是不是也有这样的操作,比如你......
  • 5.JavaScript提供的正则表达式API、可以使用正则表达式解决常见问题(邮箱校验、URL解析
    JavaScript提供的正则表达式API、可以使用正则表达式解决常见问题(邮箱校验、URL解析、去重等)js正则常用API1.五个常用方法①testreg.test(str);//返回是否包含正则......
  • JavaScript 正则表达式2
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* *创建一个正则表达式检查一个字符串中......
  • #yyds干货盘点#nginx正则表达式
    nginx正则匹配说明:细则:前缀匹配优先其中,最长匹配优先而后,按配置顺序匹配正则,正则第一个匹配到后终止无正则匹配,则用前面记住的前缀"="精确匹配,匹配后终止"~"区分大小写匹......
  • 正则表达式
    先开个篇,研究下正则表达式由于字母数字是连续相邻的,所以可以直接组合//正则表达QRegularExpressionregexp("(\[0-9a-zA-Z]+)");//匹配字母数字QRegularE......