首页 > 其他分享 >js正则匹配及格式化日期案例

js正则匹配及格式化日期案例

时间:2023-05-17 14:47:17浏览次数:36  
标签:字符 匹配 重复 fmt js 等同于 正则 date 格式化

正则匹配基础

正则表达式它是js内置的一个对象,它的构造函数是RegExp,可以通过构造函数或者字面量这两种方式创建正则表达式.

正则表达式的两个方法

  • test()方法,用于验证某个字符串是否符合这个正则表达式规则;
  • exec()方法,用于根据正则表达式去字符串中提取符合要求的字符;

正则表达式修饰符

  • g代表全局global;
  • i代表ignore忽略大小写;
  • m代表multipleline多行的意思,也就是可以换行查找;

正则表达式规则

一元符

元字符 对应说明
. 匹配除换行符之外的任意字符
\w 匹配字母数字下划线,等同于:[a-zA-Z0-9_]
\s 匹配任意空白符
\d 匹配数字,等同于[0-9]
\b 匹配单词边界
| 或匹配,如 /x|y/ 正则可匹配x或y两个字符
^ 匹配字符串的开始
$ 匹配字符串的结束
反义字符
反义字符 对应说明
[^x] 匹配除“x”之外的所有字符,其中“x”可以为任意字符
[^xyz] 同上,匹配除“x、y、z”之外的任意字符
\W 匹配除了字母、数字、下划线之外的所有字符,等同于:[^\w]
\S 匹配除空白符之外的任意字符,等同于:[^\s]
\B 匹配不是单词边界的字符,等同于:[^\b]
\D 匹配不是数字的所有字符,等同于:[^\d]
转义字符

正则表达式里面还有一些特殊的符号是需要转义的,如[,],/,.{,},+,*,?等,需要使用\转义;

转义字符 对应说明
\xnn 匹配十六进制数
\f 匹配换页符,等同于:\x0c
\n 匹配换行符,等同于:\x0a
\r 匹配回车符,等同于:\x0d
\t 匹配水平制表符,等同于:\x09
\v 匹配垂直制表符,等同于:\x0b
\unnnn 匹配Unicode字符,如:\u00A0

重复匹配

匹配字符 对应说明
* 重复出现零次或多次
+ 重复出现一次或多次
重复出现零次或一次
重复出现n次
至少重复出现n次
重复重现m到n次,其中,m<n

贪婪与惰性

贪婪模式:尽可能的选取多个;
惰性模式:尽可能少取

相关字符 对应说明
*? 重复任意次,但尽可能少的重复
+? 重复一次或多次,但尽可能少的重复
?? 重复零次或一次,但尽可能少的重复
{m,n}? 重复m到n次,但尽可能少的重复
{n,}? 重复n次以上,但尽可能少的重复

原子组编号

1,原子表指的是[],从表中拿一个出来进行匹配;
2,原子组指的是(),形成一个个小隔离域进行匹配;

  • 原子组通过()来形成一个个分组,其实在形成分组的时候,默认会形成一个个分组编号;方便进行二次提取操作,比如匹配开始标签名与结束标签名时,要保持一致;
  • \1代表的是匹配出来的第1个分组内容,\2, \3以此类推;

前瞻后顾

  • 前瞻: 匹配的是A,限制条件是A后面是B; A(?=B)
  • 后顾: 匹配表达式A,限制条件A的前面是B; (?<=B)A
  • 负前瞻: 匹配的是A,限制条件是A后面是B; A(!=B)
  • 负后顾: 匹配表达式A,限制条件A的前面是B; (?<!B)A

格式化日期案例

const formatTime = (time: string | number | Date, fmt: string): string => {

  // console.log(time, fmt)

  //Date Wed May 17 2023 13:42:22 GMT+0800 (中国标准时间)    HH: mm: ss/yyyy-MM-dd

  if (!time) return ''

  const date = new Date(time)

  const o = {

    'M+': date.getMonth() + 1,

    'd+': date.getDate(),

    'H+': date.getHours(),

    'm+': date.getMinutes(),

    's+': date.getSeconds(),

    'q+': Math.floor((date.getMonth() + 3) / 3),

    S: date.getMilliseconds()

  }

  console.log(o)

  //Object { "M+": 5, "d+": 17, "H+": 13, "m+": 52, "s+": 13, "q+": 2, S: 67 }

  if (/(y+)/.test(fmt)) {

    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))

    for (const k in o) {

      if (new RegExp('(' + k + ')').test(fmt)) {

        fmt = fmt.replace(

          RegExp.$1,

          RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)

        )

      }

    }

  }

  return fmt

}

//调用
const handleTime = () => {

      timer= setInterval(() => {

        const date = new Date()

        dateDay = formatTime(date, 'HH: mm: ss')

        dateYear = formatTime(date, 'yyyy-MM-dd')

        dateWeek = WEEK[date.getDay()]

      }, 1000)

    }

标签:字符,匹配,重复,fmt,js,等同于,正则,date,格式化
From: https://www.cnblogs.com/rain111/p/17408663.html

相关文章

  • js 查找数组中倒数第二最大值
    constarr=[1,5,3,7,9,21,33,18,12,44,43,22,55,66,65]constresult=arr=>{//存储最小值letminMax=0//存储最大值letmax=0arr.forEach(item=>{if(item>max){if(minMax<max){minMax=max......
  • excel-数据格式化
    数据格式化查找和替换替换:批量修改工作表中的某个固定字符为新的字符。查找:查找某已知固定的值,在查找内容中输入对应的值即可一个个的查找到其对应的位置。搜索目标搜索方式注意事项以A开头A*勾选“单元格匹配”以A结尾*A勾选“单元格匹配”包含AA......
  • 这款全自动自适应工具你用过了吗?autofit.js请求加入你的战场!
    前段时间做了一个自适应的小工具(autofit.js)经过一段时间的试用,同学们发现了工具存在的一些问题,我自己也发现了一些,这篇文章是针对这些问题撰写的。autofit.jsautofit.js是一款可以让你的项目一键自适应的工具。autofit.jsnpm主页autofit.jsgithub主页安装npmiautof......
  • 【React】react-json-view用法
    react-json-view:前端json可视化插件安装:npminstall--savereact-json-view 使用:importReactJsonfrom'react-json-view'<ReactJson/>配置:<ReactJsoncollapsed={false}//是否收起,true为收起indentWidth={10}//缩进iconStyle='cir......
  • 【React】格式化中国标准时间
    //定义格式化函数:handleTime(time,format){if(time==null||time==undefined||time==""){return"";}vart=newDate(time);vartf=function(i){return(i<10?'0':'')......
  • 【js】文件下载
    constdonwLoadFn=(arr)=>{if(arr.length<=0)returnconstfullUrl=`http://192.168.2.50:9803${arr[0]?.filePath}`fetch(fullUrl).then(res=>res.blob()).then(blob=>{c......
  • nodepad++ 用正则查询 替换
    下面来介绍Notepad++中关于正则表达式的部分,主要是查找和替换。对于替换功能,一般的文本编辑器,都具有此功能,但是对于高级的正则表达式替换,则很多都不支持。而Notepad++却支持此功能。例如,我从mysql数据库通过navicat获取到296条的INSERT语句,状其它的id字段及值去掉1id字......
  • delphi Format格式化函数
    delphiFormat格式化函数Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译,让它有一个完整的概貌,以供大家查询之用: 首先看它的声明:functionFormat(constFormat:string;constArgs:arrayofconst):string;overload; 事实上Format方法有......
  • JS逆向实战14——某小说网站 小说字数 和月票字体加密
    本文地址:https://www.cnblogs.com/zichliang/p/17408064.html本网站不算严格意义的逆向,只是爬虫的一个小手段。声明本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我......
  • 【开发者指南】如何在MyEclipse中编辑HTML或JSP文件?(一)
    MyEclipsev2022.1.0正式版下载MyEclipse技术交流群:742336981欢迎一起进群讨论如果您有HTML或JSP文件要编辑,这里将介绍如何编辑。查找以下信息:编辑源代码大纲和属性视图参数页面该功能在MyEclipse中是可用的。一、HTML/JSP编辑器要编辑HTML或JSP文件,请执行以下操作当......