当前位置: 首页 > news >正文

VUE之正则表达式全集整理

一、正则表达式的基本语法

var expression = /pattern(模式)/flags(标识符);

二、如何创建正则表达式

1.字面量创建

代码如下:

//匹配字符串中所有“at”的实例
var e = /at/g;
//匹配第一个“bat”或“cat”,不区分大小写
var e = /[bc]at/i;

2.RegExp构造函数创建

RegExp构造函数接收两个参数,第一个参数是要匹配的字符串模式,第二个是可选的标识符字符串。 代码如下:

//匹配第一个“bat”或“cat”,不区分大小写
var e = new RegExp("[bc]at","i");

两种创建方式的比较

在ECMAScript3中,字面量创建和RegExp对象创建区别是:字面量创建始终会共享同一个RegExp实例,而构造函数创建的每一个RegExp实例都是一个新实例 ECMAScript5明确规定:使用正则表达式字面量必须像直接调用RegExp构造函数一样,每次都创建新的RegExp实例。IE9+、Firefox 4+和Chrome都做出了修改。

需要注意的是,正则表达式中的元字符必须转义。元字符有:

( [ { \ ^ $ | ) ? * + . ] }

例如:

//匹配第一个“[bc]at”,不区分大小写
var e = /\[bc\]at/i;
//在RegExp构造函数创建时,元字符需要双重on转义
var e = new RegExp("\\[bc\\]at","i");

三、RegExp实例的属性和方法

RegExp 实例属性

  • ignoreCase 返回布尔值,表示RegExp对象是否具有标志 i
  • global 返回布尔值,表示RegExp对象是否具有表示 g
  • multiline 返回布尔值,表示RegExp对象是否具有表示 m
  • lastIndex 一个整数,标识开始下一次匹配的字符位置
  • soure 返回正则表达式的原文本 (不包括反斜杠)
  • i 执行对大小写不敏感的匹配
  • g 执行全局匹配 (查找所有匹配而非在找到第一个匹配后停止)
  • m 执行多行匹配

字符类匹配

  • [...]查找方括号之间的任何字符
  • [^..]查找任何不在方括号之间的字符
  • [a-z]查找任何从小写a到小写z的字符
  • [A-Z]查找任何从大写A到大写Z的字符
  • [A-z]查找任何从大写A到小写z的字符
  • . 查找单个字符,除了换行和行结束符
  • \w 查找单词字符,等价于 [a-zA-Z0-9]
  • \W 查找非单词字符,等价于 [^a-zA-Z0-9]
  • \s 查找空白字符
  • \S 查找非空白字符
  • \d 查找数字,等价于[0-9]
  • \D 查找非数字字符,等价于[^0-9]
  • \b 匹配单词边界
  • \r 查找回车符
  • \t 查找制表符
  • \0 查找NULL字符
  • \n 查找换行符

重复字符匹配

  • {n,m}匹配前一项至少n次,但不能超过m次
  • {n,}匹配前一项n次或更多次
  • {n}匹配前一项n次
  • n?匹配前一项0次或者1次,也就是说前一项是可选的,等价于{0,1}
  • n+匹配前一项一次或多次,等价于{1,}
  • n*匹配前一项0次或多次,等价于{0,}
  • n$匹配任何结尾为n的字符串
  • ^n匹配任何开头为n的字符串
  • ?=n匹配任何其后紧接指定字符串n的字符串
  • ?!n匹配任何其后没有紧接指定字符串n的字符串

匹配特定数字

  • ^[1-9]\d*$ 匹配正整数
  • ^-[1-9]\d*$ 匹配负整数
  • ^-?[0-9]\d*$ 匹配整数
  • ^[1-9]\d*|0$ 匹配非负整数(正整数 + 0)
  • ^-[1-9]\d*|0$ 匹配非正整数(负整数 + 0)
  • ^[1-9]\d*.\d*|0.\d*[1-9]\d*$ 匹配正浮点数
  • ^-([1-9]\d*.\d*|0.\d*[1-9]\d*)$ 匹配负浮点数
  • ^-?([1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0)$ 匹配浮点数
  • ^[1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0$ 匹配非负浮点数(正浮点数 + 0)
  • ^(-([1-9]\d*.\d*|0.\d*[1-9]\d*))|0?.0+|0$ 匹配非正浮点数(负浮点数 + 0)

四、正规则表达式有哪些方法?

1.exec()方法

exec()方法为模式的捕获组而设计的,该方法接收一个参数,即要匹配的字符串,该方法返回一个包含捕获组的数组Array,如果没有捕获组匹配返回null。返回的数组Array中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配到的字符串。数组Array中还有两个参数input(返回要匹配的字符串),index(返回匹配项在字符串中的位置) 模式中的捕获组就是指圆括号中的字符串。

例如:

var e = /do(es)(d)?/;
e.exec("ssdoesdo");
/**
array[0]:"doesd",
array[1]:"es",
array[2]:"d",
index:2,
input:"ssdoesdo"
**/

例子中,模式中包含两个捕获组”es”、”d”,即圆括号中的字符串。

2.test()方法

test()方法检索字符串中指定的值,该方法接收一个参数,如果字符串中含有与模式匹配的文本则返回true,否则返回false。

例如:

var e = /do(es)?/;
e.test("doesdo");
//true

如果正则表达式中带有g标识符,则每一次调用test方法和exec方法都从上一次匹配结束位置开始匹配;如果正则表达式中没有g标识符,则每次调用方法都从字符串起始位置开始匹配。

例如:

var e = /do(es)?/g;
e.exec("ssdoesdoesdoes");
/*
array[0]:"does",
array[1]:"es",
index:2,
input:"ssdoesdoesdoes"
*/
e.exec("ssdoesdoesdoes");
/*
array[0]:"does",
array[1]:"es",
index:6,
input:"ssdoesdoesdoes"
*/
var e = /do(es)?/g;
console.log(e.test("ssdoesdoesdoes"));
console.log(e.lastIndex);
//true
//6
console.log(e.test("ssdoesdoesdoes"));
console.log(e.lastIndex);
//true
//10
console.log(e.test("ssdoesdoesdoes"));
console.log(e.lastIndex);
//true
//14
var e = /do(es)?/;
console.log(e.test("ssdoesdoesdoes"));
console.log(e.lastIndex);
//true
//0
console.log(e.test("ssdoesdoesdoes"));
console.log(e.lastIndex);
//true
//0

五、常用的几种正则校验表达式

1.匹配手机号
/^1[34578]\d{9}$/
3.匹配正整数
/^[0-9]\d*$/
4.匹配ip地址
/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/
5.匹配邮箱
/^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/
6.匹配身份证
/^(\d{14}|\d{17})(\d|[xX])$/

相关文章:

VUE之正则表达式全集整理

一、正则表达式的基本语法 var expression /pattern(模式)/flags(标识符); 二、如何创建正则表达式 1.字面量创建 代码如下: //匹配字符串中所有“at”的实例 var e /at/g; //匹配第一个“bat”或“cat”,不区分大小写 var e /[bc]at/i; 2.RegExp构造函数创…...

Python 中的字符串基础与应用

在Python中,字符串可以用单引号或双引号括起来。‘hello’ 与 “hello” 是相同的。您可以使用print()函数显示字符串文字: 示例: print("Hello") print(Hello)将字符串分配给变量是通过变量名后跟等号和字符串完成的&#xff1a…...

C++:如何实现数组元素逆置?多种方法

方法1&#xff1a;使用额外的数组 这是一种比较简单的方法&#xff0c;它创建一个额外的数组来存储逆置后的元素&#xff0c;然后将其复制回原始数组。 #include <iostream>void reverseArray(int arr[], int size) {int reversed[size];for (int i 0; i < size; i)…...

php框架thinkPHP6的安装教程

1&#xff0c;composer官网下载最新版本 composerhttps://getcomposer.org/download/ 2&#xff0c;双击下载后的运行文件&#xff0c;一直点击next就行了 上面这个路径根据自己安装的php版本位置选择&#xff08;没有的可以下载一个phpstudy&#xff09;&#xff0c;最后需要…...

PTA程序辅助实验平台——2023年软件设计综合实践_3(分支与循环)

第一题&#xff1a;7-1 印第安男孩 - C/C 分支与循环 朵拉编程的时候也想顺便练习英语。她编程从键盘读入一个整数n&#xff0c;如果n值为0或者1&#xff0c;向屏幕输出“0 indian boy.”或“1 indian boy.”&#xff1b;如果n大于1&#xff0c;比如9&#xff0c;则输出“9 in…...

【C语言数据结构】线性表-链式存储-单链表

线性表-链式存储-单链表 代码实现 代码实现 #include<stdio.h> #include<stdlib.h> #include<stdbool.h>//定义元素数据类型 #define ElemType int//定义结点结构体 typedef struct LNode {//数据域&#xff0c;说白了就是存放当前节点的数据的。ElemType d…...

tp8 Editor.md

Editor.md - 开源在线 Markdown 编辑器 放于public文件夹下 html代码&#xff1a; <div class"layui-col-md12" id"content"><textarea name"content" placeholder"详情" class"layui-textarea">{notempty nam…...

LM小型可编程控制器软件(基于CoDeSys)笔记三十一:保持变量和非保持变量

所谓变量&#xff0c;就是用字母、数字和下划线组成的一个标识符。 按照数据类型的不同&#xff0c;变量可以分为标准类型和用户自定义类型。其中标准类型包括布尔型 &#xff08; BOOL &#xff09;、整型&#xff08; INT &#xff09;、实型&#xff08; REAL &#xff09…...

「C++之STL」关于在模拟实现STL容器中的深浅拷贝问题

文章目录 前言杨辉三角深浅拷贝问题模拟实现的vector对题目杨辉三角引发的程序崩溃原因解决办法 前言 在学习STL容器中,不仅需要学会容器的使用,同时也需要了解容器的大体框架以及各个函数的模拟实现才能更好的去了解这个容器; 杨辉三角 在LeetCode中有一道这样的题目,给定一…...

文件内容显示

目录 1.浏览普通文件 1.1. 文件内容查看 1.1.1. cat 命令 例&#xff1a; 1.1.2 扩展tac命令&#xff1a; 1.1.3. more 命令 1.1.4. less命令 1.1.5. head命令 1.1.6. tail命令 1.2. 文件属性信息查看 1.2.1. file 命令 1.2.2. stat 命令 2. 文件内容过滤…...

Milvus+Attu

Milvus 1.下载 https://github.com/milvus-io/milvus/releases/wget https://github.com/milvus-io/milvus/releases/download/v2.3.0/milvus-standalone-docker-compose.yml下载milvus-standalone-docker-compose version: 3.5services:etcd:container_name: milvus-etcdim…...

LeetCode算法二叉树—226. 翻转二叉树

目录 226. 翻转二叉树 代码&#xff1a; 运行结果&#xff1a; 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#xff1a; 输入…...

AI项目十:Swin Transformer目标检测环境搭建

若该文为原创文章&#xff0c;转载请注明原文出处。 Swin Transformer是做什么的这里不做介绍&#xff0c;主要是记录下学习的全过程&#xff0c;Swin Transformer在搭建和训练的过程中&#xff0c;折腾了很久&#xff0c;主要是在折腾环境。 一、AutoDL租用实例 个人没有GP…...

【IPC 通信】信号处理接口 Signal API(5)

收发信号思想是 Linux 程序设计特性之一&#xff0c;一个信号可以认为是一种软中断&#xff0c;通过用来向进程通知异步事件。 本文讲述的 信号处理内容源自 Linux man。本文主要对各 API 进行详细介绍&#xff0c;从而更好的理解信号编程。 kill(2) 遵循 POSIX.1 - 2008 1.库 …...

Arduino PLC IDE

Arduino PLC IDE MCU单片机进入全新的PLC领域概述需要的硬件和软件下一步操作1. Arduino PLC IDE Tool Setup2. Arduino PLC IDE Setup3. Project Setup4. Download the Runtime5. Connect to the Device6. License Activation with Product Key (Portenta Machine Control) 结…...

记录使用iText7查找PDF内容关键字坐标,加盖电子签名、印章

一、前言 项目以前签字都是由C端那边进行合成操作&#xff0c;最近项目要求把那块功能&#xff0c;由后端进行实现&#xff0c;其中包含坐标、关键字、任意位置进行签字操作&#xff0c;坐标是最容易实现的&#xff0c;曾经也写过类似的功能在&#xff08;添加图片印章到PDF&a…...

Java8实战-总结37

Java8实战-总结37 默认方法不断演进的 API初始版本的 API第二版 API 默认方法 传统上&#xff0c;Java程序的接口是将相关方法按照约定组合到一起的方式。实现接口的类必须为接口中定义的每个方法提供一个实现&#xff0c;或者从父类中继承它的实现。但是&#xff0c;一旦类库…...

【超详细】前段开发之详细的Vue3入门教程,特别适合小白系统学习,入门到熟练使用Vue看这一篇就够了!

前言&#xff1a; 这篇文章更加侧重的是Vue3不同于Vue2的知识点&#xff0c;如果学习Vue2请看下面这篇文章 Vue2详细系统入门教程 11.2 Vue3 声明&#xff1a;图片资源来自于黑马程序员公开学习资料 本人在学习当中&#xff0c;详细整理了笔记&#xff0c;供大家参考学习 1…...

【深度学习】ONNX模型多线程快速部署【基础】

【深度学习】ONNX模型CPU多线程快速部署【基础】 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】ONNX模型CPU多线程快速部署【基础】前言搭建打包环境python多线程并发简单教程基本教程ONNX模型多线程并发 打包成可执行文件总结 前…...

Python 同、异步HTTP客户端封装:性能与简洁性的较量

一、前言 引入异步编程趋势&#xff1a;Python的异步编程正变得越来越流行。在过去&#xff0c;同步的HTTP请求已经不足以满足对性能的要求。异步HTTP客户端库的流行&#xff1a;目前&#xff0c;有许多第三方库已经实现了异步HTTP客户端&#xff0c;如aiohttp和httpx等。然而…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...