js正则表达式以及元字符

news2024/11/19 17:20:46

0、常用的正则表达式规则

手机号

const reg = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/;

密码

const reg = /^[a-zA-Z0-9]{6,20}$/;

验证码

const reg = /^\d{6}$/;

1、正则表达式的介绍与使用

正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式
在Javacript中,正则表达式也是对象。通常用来查找、替换那些符合正则表达式的文本,许多语言都支持正则表达式。

作用:
表单验证(匹配)
过滤敏感词(替换)
字符串中提取我们想要的部分(提取)

const str='行路难,行路难,多歧路,今安在!';
// 正则表达式的使用
// 1、定义规则
const reg=//;
// 2、是否匹配,匹配返回true,否则返回false
console.log(reg.test(str));//true
// 3、exec()返回一个数组,没有找到返回null
console.log(reg.exec(str));

在这里插入图片描述
普通字符:
大多数的字符仅能够描述它们本身,这些字符称作普通字符,例如所有的字母和数字
也就是说普通字符只能够匹配字符串中与它们相同的字符。

元字符(特殊字符)
是一些具有特殊含义的字符,可以极大提高了灵活性和强大的匹配功能

比如,规定用户只能输入英文26个英文字母,普通字符的话 abcdefghijklm…
但是换成元字符写法: [a-z]

2.1、边界符 (表示位置,开头和结尾,必须用什么开头,用什么结尾)

正则表达式中的边界符(位置符) 用来提示字符所处的位置,主要有两个字符

边界符说明
^表示匹配行首的为本(以谁开始)
$表示匹配行尾的文本(以谁结束)
console.log(//.test('哇哈哈'));//true
console.log(//.test('二哈'));//true
// 以^开头  只要以^开头,就是true
console.log(/^/.test('哇哈哈'));//false
console.log(/^/.test('哈哈😀'));//true
//以$结束 只要以$结束,就是true
console.log(/哈$/.test('哇哈哈'));//true
console.log(/哈$/.test('哇哈哈12'));//false

// 精准定位:以^开头并以$结束
console.log(/^李旭亮$/.test('李旭亮'));//true
console.log(/^李旭亮$/.test('李旭亮12'));//false

2.2、量词 (表示重复次数)

在这里插入图片描述

// * >=0 重复0次或更多次
// 只能出现哈,且哈的字数>=0
console.log(/^哈$/.test('哈'));//true
console.log(/^*$/.test(''));//true
console.log(/^*$/.test('哈哈哈'));//true
console.log(/^*$/.test('二哈'));//false,开头不是哈
console.log(/^*$/.test('哈很哈'));//false,有别的字
console.log(/^*$/.test('哈很啥'));//false
console.log('----------------------------');

// * >=1 重复1次或更多次
// 只能出现哈,且哈的字数>=1
console.log(/^+$/.test('哈'));//true
console.log(/^+$/.test(''));//false,哈一次也没出现
console.log(/^+$/.test('哈哈哈'));//true
console.log(/^+$/.test('二哈'));//false,开头不是哈
console.log(/^+$/.test('哈很哈'));//false,有别的字
console.log(/^+$/.test('哈很啥'));//false
console.log('----------------------------');

// * ?=0||1 重复0次或1次
// 只能出现哈,且哈的字数0或1
console.log(/^?$/.test('哈'));//true
console.log(/^?$/.test(''));//true
console.log(/^?$/.test('哈哈哈'));//false,出现了3次
console.log(/^?$/.test('二哈'));//false,开头不是哈
console.log(/^?$/.test('哈很哈'));//false,有别的字
console.log(/^?$/.test('哈很啥'));//false

在这里插入图片描述

// 量词{n}, 写几,就必须出现几次
console.log(/{4}/.test('5哈哈'));//false
console.log(/{4}/.test('5332哈哈哈哈'));//true
console.log(/{4}/.test('5332哈哈哈哈哈'));//true
console.log(/^{4}$/.test('5332哈哈哈哈哈'));//false
console.log('----------------------------');
//量词{n,}      >=n
console.log(/^{4,}$/.test('哈哈哈'));//false
console.log(/^{4,}$/.test('哈哈哈哈哈'));//true
console.log('----------------------------');
//量词{n,m}      n到m之间 之间不能出现空格
console.log(/^{2,6}$/.test('哈'));//false
console.log(/^{2,6}$/.test('哈哈哈'));//true

在这里插入图片描述

2.3、字符类 (比如\d 表示0~9)

(1)[ ] 匹配字符集合

在这里插入图片描述

// 字符类 [abc]  只选一个
console.log(/^[abc]$/.test('a'));//true
console.log(/^[abc]$/.test('b'));//true
console.log(/^[abc]$/.test('ab'));//false,只能选一个
console.log(/^[abc]{2}$/.test('ab'));//true
console.log(/^[abc]{2}$/.test('abc'));//false
console.log(/^[abc]$/.test('baby'));//false

在这里插入图片描述

console.log(/[A-Z]/.test('p'));//false
console.log(/[A-Z]/.test('P'));//true
console.log(/[a-zA-Z0-9]/.test('aad352'));//true
console.log(/^[a-zA-Z0-9]$/.test('aad352'));//false
console.log(/^[a-zA-Z0-9]{6}$/.test('aad352'));//true

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4、修饰符

在这里插入图片描述

console.log(/^java$/.test('java'));//true
console.log(/^java$/i.test('Java'));//true
console.log(/^java$/ig.test('JAVA'));//true

replace替换文本
在这里插入图片描述

const str='java是一门语言,学完Java工资很高';
const result=str.replace(/java/ig,'前端');
console.log(result);

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RTOS中信号量的实现与应用

RTOS中的信号量是一种用来协调多个任务间共享资源访问的同步机制。它可以保证多个任务之间访问共享资源的正确性和一致性,避免了因多任务并发访问造成的不可预期的问题。 信号量的实现 信号量的实现原理比较简单,主要包括两个部分:计数器和…

12 readdir 函数

前言 在之前 ls 命令 中我们可以看到, ls 命令的执行也是依赖于 opendir, readdir, stat, lstat 等相关操作系统提供的相关系统调用来处理业务 因此 我们这里来进一步看一下 更细节的这些 系统调用 我们这里关注的是 readdir 这个函数, 入口系统调用是 getdents 如下调试…

HDMI协议介绍(六)--EDID

目录 什么是EDID EDID结构 1)Header Information 头信息(厂商信息、EDID 版本等) (2)Basic Display Parameters and Features 基本显示参数(数字/模拟接口、屏幕尺寸、格式支持等) (3)色度信息 (4)Established Timings(VESA 定义的电脑使用 Timings) (5)Standard Timing…

并发编程——synchronized优化原理

如果有兴趣了解更多相关内容,欢迎来我的个人网站看看:耶瞳空间 一:基本概念 使用synchronized实现线程同步,即加锁,实现的是悲观锁。加锁可以使一段代码在同一时间只有一个线程可以访问,在增加安全性的同…

Python基础知识——字符串、字典

字符串 在Python中,字符和字符串没有区别。可能有些同学学过其他的语言,例如Java,在Java中,单引号’a’表示字符’a’,双引号"abc"表示字符串"abc",但在Python当中,它们没…

【百日百题-C语言-1】KY15、45、59、72、101、132

本节目录1、KY15 abc2、KY45 skew数3、KY59 神奇的口袋4、KY72 Digital Roots5、KY115 后缀子串排序6、KY132 xxx定律 3n1思想7、KY168 字符串内排序1、KY15 abc #include<stdio.h> int main() {int a,b,c;for(a1;a<9;a)for(b1;b<9;b)for(c0;c<9;c){int xa*100 …

【macOS软件】iThoughtsX 9.3 思维导图软件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。应用介绍iThoughtsX可以帮助您直观组织想法、主意和信息。亮点使用大部分常用桌面应用程序格式来进行导入导出MindManageriMindmapFreemind/FreeplaneNovamindXMindMindviewConceptDrawOPML (OmniOutliner, Scrivener etc.)…

CornerNet介绍

CornerNet: Detecting Objects as Paired Keypoints ECCV 2018 Paper&#xff1a;https://arxiv.org/pdf/1808.01244v2.pdf Code&#xff1a;GitHub - princeton-vl/CornerNet 摘要&#xff1a; 提出了一种single-stage的目标检测算法CornerNet&#xff0c;它把每个目标检…

Vector - CAPL - 获取相对时间函数

在自动化开发中&#xff0c;无论是CAN通信测试&#xff0c;还是网络管理测试&#xff0c;亦或是休眠唤醒等等存在时间相关的&#xff0c;都可能会使用相关的时间函数&#xff1b;今天主要介绍的就是获取当前时间&#xff0c;我们知道vector工具的最大优势就是稳定和精确度高&am…

Windows使用QEMU搭建arm64 ubuntu 环境

1. 下载 QEMU&#xff1a; https://qemu.weilnetz.de/w64/ QEMU UEFI固件文件&#xff1a; https://releases.linaro.org/components/kernel/uefi-linaro/latest/release/qemu64/QEMU_EFI.fd arm64 Ubuntu镜像&#xff1a; http://cdimage.ubuntu.com/releases/20.04.3/rel…

docker-compsoe启动nginx

本次采用的是nginx:1.20版本 下载命令 docker pull nginx:1.20docker-compose.yml version: 3 services: nginx:restart: always image: nginx:1.20container_name: nginx1.20ports:- 80:80volumes: - /home/nginx-docker/nginx.conf:/etc/nginx/nginx.conf- /home/nginx-do…

【mysql是怎样运行的】-InnoDB数据页结构

文章目录1. 数据库的存储结构&#xff1a;页1.1 磁盘与内存交互基本单位&#xff1a;页1.2 页结构概述1.3 页的上层结构2. 页的内部结构2.1 第1部分&#xff1a;文件头部和文件尾部2.1.1 File Header&#xff08;文件头部&#xff09;&#xff08;38字节&#xff09;2.1.2 File…

时序预测 | MATLAB实现IWOA-BiLSTM和BiLSTM时间序列预测(改进的鲸鱼算法优化双向长短期记忆神经网络)

时序预测 | MATLAB实现IWOA-BiLSTM和BiLSTM时间序列预测(改进的鲸鱼算法优化双向长短期记忆神经网络) 目录时序预测 | MATLAB实现IWOA-BiLSTM和BiLSTM时间序列预测(改进的鲸鱼算法优化双向长短期记忆神经网络)预测效果基本介绍程序设计参考资料预测效果 基本介绍 MATLAB实现IWO…

[1.3_3]计算机系统概述——系统调用

文章目录第一章 计算机系统概述系统调用&#xff08;一&#xff09;什么是系统调用&#xff0c;有何作用&#xff08;二&#xff09;系统调用与库函数的区别&#xff08;三&#xff09;小例子&#xff1a;为什么系统调用是必须的&#xff08;四&#xff09;什么功能要用到系统调…

Spring——整合junit4、junit5使用方法

spring需要创建spring容器&#xff0c;每次创建容器单元测试是测试单元代码junit4依赖<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-i…

【mysql是怎样运行的】-InnoDB行格式

文章目录1 指定行格式的语法2 COMPACT行格式2.1 变长字段长度列表2.2 NULL值列表2.3 记录头信息&#xff08;5字节&#xff09;2.4 记录的真实数据3 Dynamic和Compressed行格式1 指定行格式的语法 CREATE TABLE 表名 (列的信息) ROW_FORMAT行格式名称ALTER TABLE 表名 ROW_FOR…

Java面试题总结

文章目录前言1、JDK1.8 的新特性有哪些&#xff1f;2、JDK 和 JRE 有什么区别&#xff1f;3、String&#xff0c;StringBuilder&#xff0c;StringBuffer 三者的区别&#xff1f;4、为什么 String 拼接的效率低&#xff1f;5、ArrayList 和 LinkedList 有哪些区别&#xff1f;6…

Trace、Metrics、Logging 选型

背景分布式追踪的起源自从微服务的兴起开始&#xff0c;整个系统架构开始变得极为庞大和复杂&#xff0c;但是服务之间的调用关系&#xff0c;调用消耗时间等等信息却依然是半黑盒的状态。为了能够将调用的链路进行串联&#xff0c;将系统的各种指标数据展示出来以使得系统的链…

windows 服务程序和桌面程序集成(一)

本系列文章介绍如何将windows服务程序和桌面程序集成在一起&#xff0c;也就是说一个EXE程序&#xff0c;既可以作为服务程序运行&#xff0c;也可以作为桌面程序运行的双模程序。在十几年前&#xff0c;曾经给客户开发一套C/S架构的出单程序&#xff0c;当时不是很清楚windows…

C++016-C++结构体

文章目录C016-C结构体结构体目标结构体定义结构体实例化结构体题目描述在线练习&#xff1a;总结C016-C结构体 在线练习&#xff1a; http://noi.openjudge.cn/ https://www.luogu.com.cn/ 结构体 参考&#xff1a;https://www.cnblogs.com/ybqjymy/p/16561657.html https://…