正则表达式练习

(function() {

    //#region   定义正则表达式
    // const reg = /前端/g;
    // ------------test-------------
    // const res = reg.test("学java,找黑马");
    // console.log(res)
    // ------------exec--------------
    // const res = reg.exec("学好前端,找黑马");
    // console.log(res);
    // ------------replace--------------
    // const str = "学前端,找黑马";
    // const res = str.replace(reg, "java");
    // console.log(res);
    // ------------match--------------
    // const str = "学前端,找黑马,前端就业前景好";
    // const res = str.match(reg);
    // console.log(res);
    //#endregion
    //#region 元字符
    // *:表示0次或多次
    // const reg = /^a*$/;
    // console.log(reg.test("a"))
    // console.log(reg.test(""))
    // console.log(reg.test("aaaaaa"))
    // console.log(reg.test("abbbb "))
    // +:表示1次或多次
    // const reg = /^a+$/;
    // console.log(reg.test("a"))
    // console.log(reg.test(""))
    // console.log(reg.test("aaaaaa"))
    // console.log(reg.test("abbbb "))
    // ?:表示0次或1次
    // const reg = /^a?$/;
    // console.log(reg.test("a"))
    // console.log(reg.test(""))
    // console.log(reg.test("aaaaaa"))
    // console.log(reg.test("abbbb "))
    // {n}:表示只有n次
    // const reg = /^a{3}$/;
    // console.log(reg.test("aaa"))
    // console.log(reg.test(""))
    // console.log(reg.test("aaaaaa"))
    // console.log(reg.test("abbbb "))
    // {n,}:表示大于等于n次
    // const reg = /^a{3,}$/;
    // console.log(reg.test("aaa"))
    // console.log(reg.test(""))
    // console.log(reg.test("aaaaaa"))
    // console.log(reg.test("abbbb "))
    // {n,m}:n-m次
    // const reg = /^a{3,5}$/;
    // console.log(reg.test("aaa"))
    // console.log(reg.test(""))
    // console.log(reg.test("aaaaaa"))
    // console.log(reg.test("aaaa"))
    //#endregion
    //#region 元字符-字符类
    //[]
    // const reg = /[abc]/; //匹配abc中的任意一个
    // const res = reg.test('abc'); //true
    // console.log(res)
    // ^取反
    // const reg = /[^0-9]/;
    // console.log(reg.test("aaa"));
    // console.log(reg.test("111"));
    // console.log(reg.test("aa34a"));


    //#endregion
    // \d 数字等价[0-9]
    /**
    \d 一位数字
    *
    \d{2} 2位数字
    \d{2,4} 2-4位数字
    \d{2,} 大于两位的数字
    \d+ 等价于\d{1,}
    \d* 等价于\d{0,}
    \d? 等价于\d{0,1}
    */
    // const reg1 = /^\d{2,}$/
    // console.log(reg1.test('1'))
    // 校验手机号/座机号
    // const reg = /^1\d{10}$/;
    // console.log(reg.test('18386223456'))

    // 邮箱验证
    /**
    [0-9a-z_] 可以是0-9的数字,也可以是a-z的字母,也可以是_,-代表区间
    [ABCD1234.] 可以是ABCD1234.其中的任意一项,在中括号中。就是.的意思
    [^.]当^出现在中括号里的时候,表示取反,这句的意思是 除了。以外的
    **/
    // const reg1 = /^[0-9a-z_]{2,20}@[a-z0-9]{1,10}[.a-z0-9]+[^.]+$/i
    // console.log(reg1.test('245094530@163.com.cn'))

    // 正则当中的简写语法
    /**
    \s 空白符包括换行
    \S 非空白,与上面相反
    \n 换行
    \w[a-zA-Z0-9_]
    \W [^a-zA-Z0-9_]
    任意字符(除了\n\r)
    */

    // 身份证号验证
    // const reg1 = /^(\d{15}|\d{17}[0-9X]{1})$/i
    // console.log(reg1.test('32099919900101321X'))
    // 数字转千分位
    // const money = 99999999
    // console.log(money.toLocaleString())
    // 校验名字必须位中文
    // const reg1 = /^[\u4e00-\u9fa5]{2,5}$/
    // console.log(reg1.test("中文345454"))
    // 字符串模板
    // const text = '{name}说,今天天气{desc}'
    // const obj = {
    //     name: '张三',
    //     desc: '真好'
    // }
    // console.log(text.replace(/\{(.*?)\}/g, (result, group1) => {
    //     return obj[group1]
    // }))
    //去掉多余的空格
    // const text = '  你  好  ';
    // console.log('---' + text.replace(/\s/g, '') + '---')

    // 数据格式化
    const text = `xxxx;张三:15555555555,2222zddd333;xxxx;xxxx;李四:13333333333,2222zddd333;xxxx`
    const arr = []
    text.replace(/;([\u4e00-\u9fa5]+):(1\d{10}),([0-9a-z]+);/g, (result, group1, group2, group3) => {
        console.log(group1)
        arr.push({
            name: group1,
            phone: group2,
            orderId: group3
        })

    })
    console.log(arr)


})()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/102337.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【调试经验】Ubuntu22.04 安装和配置MySQL 8.0.34

本文共计1469字,预计阅读时间5分钟 在安装新版本的MySQL到电脑时,按着网上一些教程执行发现错误繁多,最后索性自己摸索并把服务装好了。自己也整理了一下在操作时的笔记,上传上来希望能帮助到大家。 目录 正文 安装MySQL 配置…

串口接收数据-控制LED灯

目标 通过串口接收数据,对数据分析,控制8个LED灯按照设定时间闪烁。 8个LED灯可以任意设计,是否闪烁。闪烁时间按ms计算,通过串口发送,可设置1~4,294,967,296ms,也就是4字节数据协议自拟,有数…

Oracle21C--Windows卸载与安装

卸载方法: (1)WinR,输入services.msc,打开服务,把Oracle相关的服务全部停止运行(重要) (2)WinR,输入regedit,打开注册表,删除Oracle开…

MATLAB中circshift函数转化为C语言

背景 有项目算法使用matlab中circshift函数进行运算,这里需要将转化为C语言,从而模拟算法运行,将算法移植到qt。 MATLAB中circshift简单介绍 circshift是循环移位函数。可以使用于数组和矩阵元素的循环移位。 当A是数组 Bcircshift(A,p);如果…

虚拟世界指南:从零开始,一步步教你安装、配置和使用VMware,镜像ISO文件!

本章目录 CentOS简介镜像下载一、新建虚拟机(自定义)1、进入主页,在主页中点击“创建新的虚拟机”2、点击创建虚拟机创建自己的虚拟机。可以选择自定义3、在“硬件兼容性(H)中选择:Workststion 15.x” ->下一步4、选择“稍后安…

浅析Linux虚拟网络技术

文章目录 概述Tap/tun设备tun/tap的工作机制 Bridge网桥Bridge的工作机制Bridge IP 相关参考 概述 在传统的网络环境中,一台物理主机包含一张或多张网卡,要实现与其它物理主机之间的通信,需要将自身的网卡通过路由器或者交换机连接到外部的物…

Flutter 状态管理引子

1、为了更好地了解状态管理,先看看什么是状态。 在类似Flutter这样的响应式编程框架中,我们可以认为U相关的开发就是对数据进行封装,将之转换为具体的U1布局或者组件。借用Flutter官网的一张图,可以把我们在第二部分做的所有开发…

CSS流光按钮-圆形

主要思路 仅保留一条边框 border-radius 50%drop-shadow动画 animation keyframes 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, …

【MySQL】用户管理

之前我们一直都使用root身份来对mysql进行操作&#xff0c;但这样存在安全隐患。这时&#xff0c;就需要使用MySQL的用户管理 目录 一、用户 1.1 用户信息 1.2 添加用户 1.3 删除用户 1.4 修改用户密码 二、用户权限 2.1 赋予授权 2.2 回收权限 一、用户 1.1 用户信息…

2023数学建模国赛四天速成计划来啦!(内含大量资料)

大家好呀。高教社杯全国大学生数学建模竞赛&#xff08;下称国赛&#xff09;9.7日下午6点就正式开始了&#xff1a; 在这里给大家带来一个五天的速成计划啦&#xff01;大家可以收藏本文章或者转发到你们队友群哈&#xff0c;此外我还会发放很多资料给大家&#xff0c;注意&am…

12. 自动化项目实战

目录 1. 登录测试 2. 测试首页的帖子列表数不为0 3. 帖子详情页校验 4. 发布帖子 5. 退出登录 自动化项目实施的基本流程如下图所示&#xff1a; 手工测试用例、自动化测试用例。 1. 登录测试 校验登录后主页显示的用户名称和登录时输入的用户名是否相等。 public class…

机器学习——手写数字识别

0、&#xff1a;前言 这篇文章能够帮助你从数据到模型的整个过程实现不过至于安装第三方库等基础问题&#xff0c;本文不涉及&#xff0c;因为确实不难&#xff0c;搜一搜一大把本此实验运行环境为jupyter&#xff0c;当然通过pycharm也是可行的 1、数据&#xff1a; 手写数字…

JVM 判定对象是否死亡的两种方式

引用计数法&#xff1a;&#xff08;脑门刻字法&#xff09;和 可达性分析 引用计数算法 引用计数器的算法是这样的&#xff1a;在对象中添加一个引用计数器&#xff0c;每当有一个地方引用它时&#xff0c;计数器值就加一&#xff1b;当引用失效时&#xff0c;计数器值就减一…

volatile 关键字 与 CPU cache line 的效率问题

分析&回答 Cache Line可以简单的理解为CPU Cache中的最小缓存单位。目前主流的CPU Cache的Cache Line大小都是64Bytes。假设我们有一个512字节的一级缓存&#xff0c;那么按照64B的缓存单位大小来算&#xff0c;这个一级缓存所能存放的缓存个数就是512/64 8个。具体参见下…

Java面试八股文必备闯关秘籍:第一章-Java基础篇

目录 第一章-Java基础篇 1、你是怎样理解OOP面向对象 难度系数&#xff1a;⭐ 2、重载与重写区别 难度系数&#xff1a;⭐ 3、接口与抽象类的区别 难度系数&#xff1a;⭐ 4、深拷贝与浅拷贝的理解 难度系数&#xff1a;⭐ 5、sleep和wait区别 难度系数&a…

Python 类和对象

类的创建 Python语言中&#xff0c;使用class关键字来创建类&#xff0c;其创建方式如下&#xff1a; class ClassName(bases):# class documentation string 类文档字符串&#xff0c;对类进行解释说明class_suiteclass是关键字&#xff0c;bases是要继承的父类&#xff0c;…

算法工程题(非递减顺序 排列)

* 题意说明&#xff1a; * 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c; * 分别表示 nums1 和 nums2 中的元素数目。 * 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。…

Mybatis中 list.size() = 1 但显示 All elements are null

一、Bug展示 二、原因分析 2.1.情形一&#xff1a;Mybatis的XML中返回类型映射错误 <select id"selectByDesc" parameterType"com.task.bean.OrderInfo"resultType"com.task.bean.OrderInfo">select MER_ID,SETTLE_DATE,ICE_NAME,ORDER_S…

总线:特性、分类、性能指标、系统总线的结构、总线仲裁、总线定时、总线标准

总线&#xff08;Bus&#xff09;&#xff0c;是一组为各功能部件之间进行信息传送的公共线路。 总线的特性&#xff1a; 机械特性&#xff08;物理特性&#xff09;&#xff1a;尺寸、形状、引脚数、排列顺序。电气特性&#xff1a;每根信号线上的信号传输方向、表示信号有效…

iOS swift5 扫描二维码

文章目录 1.生成二维码图片2.扫描二维码&#xff08;含上下扫描动画&#xff09;2.1 记得在info.plist中添加相机权限描述 1.生成二维码图片 import UIKit import CoreImagefunc generateQRCode(from string: String) -> UIImage? {let data string.data(using: String.En…