js正则详情

2023-10-30

一、原子(可以分微可见原子和不可见原子)

    1、可见原子

  • 标点;”、/ ?.等等
  • 英文字母数字a-z, A-Z, 0-9
  • 汉字、韩文、日文、阿拉伯文等
  • ∑ π ∩ ∈ △ 等数理化符号
  • 其他可见字符

    2、不可见原子

        换行符 \n 回车 \r 制表符 \t  空格、其他不可见符号

二、元字符

1、原子的筛选方式

匹配两个或多个分支选择
[ ] 匹配方括号汇总任意一个原子
[^ ] 匹配除方括号中原子以外的任意字符
/ab|cd/.test('abcde')
// true
/[123]/.test('abc45')
//匹配123中任意一个
//false
/[^123]/.test('abc45')
//匹配非123以外的字符
//true
/[12^3]/.test('abc^45')
//true
/[a-gA-Z3-6]/.test('12yxz')
//false

 需要注意的是

如果^不在首位的话就当普通字符匹配了

2、原子集合和量词

        

. 匹配除换行之外的任意字符,即 [^\n]
\d 匹配任意一个十进制数字,即 [0-9]
\D 匹配任意一个非十进制数字,即 [^0-9]
\s 匹配一个不可见的原子, 即 [\f \n \r \t \v]
\S 匹配一个可见的原子, 即 [^\f \n \r \t \v]
\w 匹配任意一个数字、字母、下划线,即 [0-9a-zA-Z_]
\W 匹配任意非一个数字、字母、下划线,即 [^0-9a-zA-Z_]
x{n} 表示x刚好出现n次
x{n, } 表示x至少出现n次
x{n, m} 表示x在n和m次之间,包含
x* 匹配大于等于0次, 即x{0, }。 x*? 即x{0}
x+ 匹配大于等于1次, 即x{1, }。 x+? 即x{1}
x? 匹配等于0次或1次, 即x{0, 1}
\b 匹配字的边界,即字和空格之间位置
\B 匹配非字的边界
\f 匹配换页字符
\n 匹配换行字符
\r 匹配回车字符
\t 匹配制表字符
\v 匹配垂直制表符
x*? 匹配0个x
x+? 匹配1个x

3、分组 

(x) 分组,并且记录匹配到的字符串 'abcd'.match(/(abc)/)
\n 使用分组(x)匹配到的字符串 /(a)\1(b)\2/.test('aabb')
(?:x) 仅分组,不记录, 'abc'.match(/(?:ab)/)
(?=x) 分组匹配x之前的字符串并记录 `com">`.match(/^.{1,10}(?=(">))/)
(?<=x) 分组匹配x之后的字符串并记录 `="www.`.match(/(?<==").{1,10}$/)
(?!x) 分组匹配不是x之前的字符串并记录
(?<!x) 分组匹配不是x之后的字符串并记录
(?<name>x) 分组匹配x并放到name的组中
x$ 匹配任何结尾为 x 的字符串
^x 匹配任何开头为 x 的字符串

注意()中会当做一个原子来看待

三、方法

1、RegExp对象属性

1、global
/abc/g.test('abcedf')
//true

2、ignoreCase
/abc/gi.test('ABcedf')
//true

3、multiline
/abc/gim.test('abc\n')
//true

4、source
/abc/g.source
//返回abc

2、RegExp 对象的方法

        compile、exec、test、toString.

/abc/.exec("abcde");
// "abc"

/abc/.test("abcde");
//true

/abc/.toString(); 
//"/abc/"

var reg = /abc/; reg.compile("def");
reg.test("def");

//true

3、支持正则表达式的 String 对象的方法

        search、match、replace、split

'abcabcdef'.search(/(abc)\1/); 
//0

"aabbbcc".replace(/b+?/, "1");
//"aa1bbcc"

"aabbc".replace(/b*?/g, "1");
//"1a1a1b1b1c1"

"aabbbbccbbc".match(/b+/g);
//["bbbb", "bb"]

"aabbbccbbaabbdd".split(/b+/g);
//["aa", "cc", "aa", "dd"]

四、应用

之前项目中,有需要把数字,每三个数字加一个逗号,先自己写了个有循环的方法,在去网上查,发现只要一条正则就可以解决

function toThousands(num) {
    return (num || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');
}

function myFun(num) {
    return (num || 0).toString().replace(/b*?(?=(\d{3})+$)/g, ",").replace(/^,/, '');
}

第一函数是网上查来的,replace第二个参数中$1匹配正则中第一个记录的()中字符。

参考所学的正则知识,自己手写了第二个myFun函数,意思是以3个数字结尾的前面加“,”,但是不能取消开头的,只能写两个正则。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js正则详情 的相关文章

  • getopts 可选参数_linux shell命令行选项与参数用法详解--getopt

    本文介绍了linux shell中使用命令行选项与命令行参数的方法 在bash中 可以用以下三种方式来处理命令 行参数 每种方式都有自己的应用场景 问题描述 在linux shell中如何处理tail n 10 access log这样的命
  • gsoap学习笔记一

    本文章是对gsoap中生成的cpp类型的代码框架的应用 因为要实现一些ONVIF规范中的一些功能 所以选择了gsoap生成代码框架 但是发现好多博客上都是生成的C的代码框架 使用起来很麻烦 而且引用插件功能的时候 什么时候需要修改文件内容

随机推荐

  • Vue各种标签的使用方法

    1 内容绑定 事件绑定 v text v html v on 1 v text 绑定内容 作用 设置标签的内容 无论内容是什么 它只会解析文本 div style color red h2 h2 h1 h1 div
  • RuoYi框架微服务版本(windows环境)二次开发环境搭建详解【小白版】

    1 需要准备的依赖环境服务 JDK gt 1 8 推荐1 8版本 Mysql gt 5 7 0 推荐5 7版本 Redis gt 3 0 Maven gt 3 0 NodeJS gt 10 以上安装配置不赘述 nacos gt 1 1 0
  • 基于Smack3.0.4+ Openfire3.10.2开发之Android 客户端之二

    我们在之前依次介绍openfire部署以及smack常用API的使用 这一节中我们着力介绍如何基于asmack开发一个Android的客户端 本篇的重点在实践 讲解和原理环节 大家可以参考前面我所发布的OpenFire和Smack的相关文章
  • FLOPS的计算

    参考 https blog csdn net qq 42309265 article details 123098538 概念 FLOPS 浮点运算数 是floating point operations per second的缩写 意指每
  • C51子函数

    子函数 将完成某一种功能的程序代码单独抽取出来形成一个模块 在其它函数中可以随时调用此模块 以达到代码的复用和优化程序结构的目的 void Function unsigned char x 返回值 函数名 形参 函数体
  • 爬虫的异常处理办法

    爬虫是一种自动化程序 用于从互联网上收集数据 然而 由于互联网的不确定性和复杂性 爬虫程序可能会遇到各种异常情况 这些异常情况可能会导致爬虫程序停止工作或者收集到错误的数据 因此 异常处理是爬虫程序开发中非常重要的一部分 本文将介绍爬虫程序
  • mysql视图总结

    1 概述 视图是指计算机数据库中的视图 是一个虚拟表 其内容由查询定义 同真实的表一样 视图包含一系列带有名称的列和行数据 但是 视图并不在数据库中以存储的数据值集形式存在 行和列数据来自由定义视图的查询所引用的表 并且在引用视图时动态生成
  • au人声处理_如何消去人声保留伴奏?

    因为有做混剪视频 经常需要把声音和背景音乐分离 所以我尝试过很多的办法 下面分享2种我觉得分离效果还行的方法 PS 先声明 目前技术只能优化声音 音乐分离 还不能完成剥离 所以人声和音乐分离后 音质肯定会有些许的损失 01 Au中置声道提取
  • 一个小时内学习SQLite数据库

    1 介绍 SQLite 是一个开源的嵌入式关系数据库 实现自包容 零配置 支持事务的SQL数据库引擎 其特点是高度便携 使用方便 结构紧凑 高效 可靠 与其他数据库管理系统不同 SQLite 的安装和运行非常简单 在大多数情况下 只要确保S
  • 使用Typora编辑markdown上传CSDN时图片大小调整麻烦问题

    文章目录 一 问题来源 二 解决方案 一 创建工程项目 二 代码 一 问题来源 我日常写博客时 首先使用 typora 编辑 markdown 文件 然后在 CSDN 的 markdown 编辑器中导入 md 文件 但是使用 typora
  • 攻防世界web题总结A

    题1 思路 题目说右键用不了 因为打开右键可以查看网页的代码 所以我们要想办法打开网页大源代码 复制链接在浏览器上打开 因为右键用不了 我们可以按一下快捷键 1 可以直接按 F12 不过有些电脑不可以 需要按 Fn F12 2 直接按 Ct
  • 初识java——熟悉java代码格式

    CD145 整数的二进制数表达中有多少个1 求一个整数 在内存当中存储时 二进制1的个数 方法一 一个整型的数字共32个比特位 每个比特位如何判断是否为1 只需让这一位和1进行按位与即可 import java util Scanner p
  • TARS-PHP:PHP构建高性能RPC框架

    内容来源 2018 年 5 月 19 日 阅文集团高级开发工程师梁晨在 PHPCon China 2018 技术峰会 进行 TARS PHP PHP构建高性能RPC框架 演讲分享 IT 大咖说 微信id itdakashuo 作为独家视频合
  • activiti-Cancel activity属性(cancelActivity)作用

    流程设计工具 activiti explorer activiti版本 5 22 在使用边界计时器事件时 事件有一个参数 Cancel activity 作用上图 如下 Cancel activity选中 在事件中设置5秒计时 当开始流程后
  • Error: Failed to download resource "python"

    最近在mac 部署flutter开发环境遇到一些IOS开发工具安装的问题 为解决问题到处寻找答案 浪费了大量时间 故在此记录一下避免再次入坑 执行flutter doctor检测环境 开始安装缺失工具 taodeMacBook Pro ta
  • osgEarth的Rex引擎原理分析(二十四)TileNode节点下的场景树分析

    目标 十八 中的问题54 osgEarth Drivers RexTerrainEngine TileNode是rex引擎下的一个重要节点 这个节点还不是真正在Earth中看到的瓦片 其内部还有场景树 具体包括一个SurfaceNode和四
  • stm32学习笔记——外部中断

    stm32的每个IO口都可以作为外部中断输入 stm32的中断控制器支持19个外部中断 事件请求 线0 15 对应外部IO口的输入中断 线16 连接到PVD输出 线17 连接到RTC闹钟事件 线18 连接到USB唤醒事件 每个外部中断线都可
  • Android中的Cursor到底是什么?如何理解Cursor的方法都在做什么事情?

    一 Cursor到底是什么 网上很多博客都介绍了Cursor 介绍了各种概念 各种原理 可是有的小伙伴可能还是很懵逼 这特码的到底都是什么 刚开始接触Cursor的时候也是一脸懵逼 看到人家说这个方法是在干什么干什么 可以脑子里没有一个生动
  • 双循环链表

    线性存储 数组和链表都是一维结构 以线性结构存储数据 数组 数组和计算机内存结构保持一致 现有的编程语言提供了语言层面对数组的支持 数组支持随机访问 可以按照索引高效读取和存储 一般来说 数组在初始化时 已固定大小 当数组存储已满 需要再存
  • js正则详情

    一 原子 可以分微可见原子和不可见原子 1 可见原子 标点 等等 英文字母数字a z A Z 0 9 汉字 韩文 日文 阿拉伯文等 等数理化符号 其他可见字符 2 不可见原子 换行符 n 回车 r 制表符 t 空格 其他不可见符号 二 元字