js正则表达式以及元字符

news/2024/5/2 8:32:27/文章来源:https://blog.csdn.net/lxllxl211/article/details/129332744

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.luyixian.cn/news_show_77591.aspx

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

相关文章

用Python Flask为女朋友做一个简单的网站(附可运行的源码)

🌟所属专栏:献给榕榕🐔作者简介:rchjr——五带信管菜只因一枚😮前言:该专栏系为女友准备的,里面会不定时发一些讨好她的技术作品,感兴趣的小伙伴可以关注一下~👉文章简介…

docker安装即docker连接mysql(window)

一 安装docker 1.什么是docker Docker容器与虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、高效地利用服务器。 2.WSL2 WSL,即Windows Subsystem on Linux,中…

【CV学习笔记】之ncnnFastDet多线程c++部署

1、前言 ncnn是一款非常高效易用的深度学习推理框架,支持各种神经网络模型,如pytorch、tensorflow、onnx等,以及多种硬件后端,如x86、arm、riscv、mips、vulkan等。 ncnn项目地址:https://github.com/Tencent/ncnn FastDet是设计…

RK3568触摸屏驱动调试总结

硬件电路分析 RK3568 CPU通过I2C与触控板外设wdt87xx连接。 首先要根据电路图获取如下I2C的信息: 项目Value接在哪个I2Ci2c1I2C 寄存器地址0x2cHID 地址0x20中断B5 1、接在哪个I2C 如图,1接在I2C1: 2、使用哪个GPIO引脚接收触控板的中断 如图&#xf…

Buuctf Younger-drive 题解

目录 一.查壳 二.运行缺少dll 三.主函数 四.hObject线程 五.Thread线程 六.judge函数 七.解题脚本 这题的关键在于了解一定的线程相关知识 一.查壳 32位带壳,用upx脱壳 二.运行缺少dll 后续尝试了各种方法修复dll但是还是运行不了 值得一提的是脱壳后的程序不能动态调试…

MySql启动错误(Mac系统 安装 mysql-8.0.32-macos13-arm64 后每次点击启动 无法启动) --- 已解决

MySql启动的时候: 立即变红! 查看日志如下: 2023-03-04T14:18:01.089671Z 0 [System] [MY-010910] [Server] /usr/local/mysql/bin/mysqld: Shutdown complete (mysqld 8.0.32) MySQL Community Server - GPL. 2023-03-04T14:18:10.304169Z 0 [System] [MY-010116] [Server]…

HiveSQL一天一个小技巧:如何精准计算非连续日期累计值【闪电快车面试题】

0 需 求稀疏字段累计求和问题1 问题分析根据图片中数据变换的形式,可以看出是根据字段term补齐数据中缺失的日期,term为连续日期的个数,当为12时,表明由2018-12-21到2019-01-02连续日期个数为12,当补齐日期后&#xff…

计算机网络的166个概念你知道几个 第四部分

HTML:HTML 称为超文本标记语言,是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的 Internet 资源连接为一个逻辑整体。HTML 文本是由 HTML 命令组成的描述性文本,HTML 命令可以说…

【LeetCode每日一题】——605.种花问题

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 贪心算法 二【题目难度】 简单 三【题目编号】 605.种花问题 四【题目描述】 假设有一个很长…

K8S 实用工具之二 - 终端 UI K9S

开篇 📜 引言: 磨刀不误砍柴工工欲善其事必先利其器 第一篇:《K8S 实用工具之一 - 如何合并多个 kubeconfig?》 像我这种,kubectl 用的不是非常溜,经常会碰到以下情况: 忘记命令,先…

BUU [ZJCTF 2019]Login

这是一道让我感觉很淦的题,整一天了才大致了解了来龙去脉 开始: 首先丢到虚拟机checksec一下看看有啥保护措施: 看到开了Canary,就已经感觉不妙了,接着丢到IDA里看看啥情况 一看,是令人痛苦的c风格的代码…

LeetCode-63. 不同路径 II

题目来源 63. 不同路径 II 递归 class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int row obstacleGrid.length-1;int col obstacleGrid[0].length-1;return process(row,col,0,0,obstacleGrid);}private int process(int row ,int col,int i…

Cesium三维数据格式以及生产流程详解(glb,osgb,obj,bim,ifc)等

最近收到私信问我在cesium上展示的一些三维数据是如何生产和处理的,这篇文章就给大家一次性讲个透彻。 首先我们来做做分类。市面上能接触到的,常见的,cesium上支持展示的三维数据大致分为以下几种: 1.倾斜摄影(osgb,obj) 2.点云数据(las,pts) 3.手工模型(gltf,…

【SpringCloud】SpringCloud详解之Eureka实战

目录前言SpringCloud Eureka 注册中心一.服务提供者和服务消费者二.需求三.搭建Eureka-Server四.搭建Eureka-Client(在服务提供者配置:用户订单)前言 微服务中多个服务,想要调用,怎么找到对应的服务呢? 这里有组件的讲解 → SpringCloud组件…

跳表--C++实现

目录 作者有话说 为何要学习跳表?为了快,为了更快,为了折磨自己..... 跳表作用场景 1.不少公司自己会设计哈希表,如果解决哈希冲突是不可避免的事情。通常情况下会使用链址,很好理解,当有冲突产生时&#…

RTOS中信号量的实现与应用

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

十大经典排序算法【快速了解】

文章目录一、算法分类二、经典排序算法总览三、算法复杂度四、代码实现一、算法分类 十种常见排序算法可以分为两大类: 比较类排序: 通过比较来决定元素间的相对次序由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非…

22. linux系统基础

递归遍历指定文件下所有的文件,而且你还可以统计一下普通文件的总个数,既然能统计普通文件,能统计其他文件吗?比如目录文件, 这个是main函数里面我们调用了 ,这个checkdird这个函数,需要传递一个…

[数据结构]:10-二叉排序树(无头结点)(C语言实现)

目录 前言 已完成内容 二叉排序树实现 01-开发环境 02-文件布局 03-代码 01-主函数 02-头文件 03-BinarySearchTreeCommon.cpp 04-BinarySearchTreeFunction.cpp 结语 前言 此专栏包含408考研数据结构全部内容,除其中使用到C引用外,全为C语言…

大数据框架之Hadoop:MapReduce(八)常见错误及解决方案

1、导包容易出错。尤其Text和CombineTextInputFormat。 2、Mapper中第一个输入的参数必须是LongWritable或者NullWritable,不可以是IntWritable. 报的错误是类型转换异常。 3、java.lang.Exception: java.io.IOException: Illegal partition for 13926435656 (4)&…