【JS重点知识05】正则表达式

目录

一:正则表达式简介

1 什么是正则表达式

2 正则表达式作用

二:语法格式:

1 定义正则表达式

2 检索、判断是否匹配

(1)test()方法

(2)exec()方法

三:元字符

普通字符:

元字符(特殊字符)

元字符分类

边界符(确定位置)

量词(表示重复次数)

字符类

[ ]匹配字符集合

(1)[ ]里加上连字符“-”

(2)[ ]里面加一个^取反符号

“.”匹配除换行符之外的任何单个字符

预定义

四:修饰符

作用:

语法格式:

replace方法

语法:

五:综合案例

需求以及实现:

效果图:

素材:


本文章目标:学习正则表达式概念及语法,编写简单的正则表达式实现字符查找或检测;

一:正则表达式简介

1 什么是正则表达式

是用于匹配字符串中字符组合的模式。在JS中,正则表达式也是对象

2 正则表达式作用

  • 表单验证(匹配):用户名只能输入英文字母、数字或者下划线,昵称输入框中可以输入中文
  • 过滤敏感词(替换):过滤掉页面内容中的一些敏感词
  • 字符串中提取想要部分(提取)

二:语法格式:

分为两步:先定义正则表达式规则,再根据规则进行查找

1 定义正则表达式

const 变量名 = /表达式/

2 检索、判断是否匹配

(1)test()方法

用来判断确定的正则表达式与指定的字符串是否匹配。如果匹配成功返回true,没有匹配成功返回false

语法:
定义规则的变量名.test(被检测的字符串)

案例:

    const str = '前端加油'
    const reg = /前端/
    console.log(reg.test(str));//true

(2)exec()方法

在一个指定字符串中执行一个搜索匹配。如果匹配成功,该方法返回一个数组,否则返回null

语法:
建立的规则.exec(被检测的字符串)

案例:

    const str = '前端加油'
    const reg = /前端/
    // console.log(reg.test(str));
    console.log(reg.exec(str));

三:元字符

普通字符:

大多数字符仅能描述他们本身,称为普通字符。例如所有的字母和数字,以及汉字

也就是说,普通字符只能够匹配字符串中与它们相同的字符

元字符(特殊字符)

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

  • 比如,规定用户只能输入26个英文字母,普通字符要写abcdefg...
  • 元字符写法:[a-z]

元字符分类

边界符(确定位置)

用来提示字符所处的位置,主要有两个字符

^、$两个都出现在正则表达式定义的规则中,则表示精确匹配

量词(表示重复次数)

用来定义某个模式出现的次数

字符类

[ ]匹配字符集合

作用:匹配中括号中任意一个字符

/[abc]/.test('待匹配的字符串'),小括号中字符串只要包含abc中任意一个字符,都返回true

(1)[ ]里加上连字符“-”

使用连字符表示匹配一个范围

[a-zA-Z]表示匹配小写a-z以及大写A-Z中任意一个字符

腾讯QQ号的正则表达式:
/^[1-9][0-9]{4,}/,表示以数字1-9开头,4位以上的数字
(2)[ ]里面加一个^取反符号

/[^a-z]/表示匹配除小写字母以外的字符,注意实在中括号中添加而非再/ /中添加

“.”匹配除换行符之外的任何单个字符
预定义

指的是某些常见模式的简写方式

日期格式:^\d{4}-\d{1,2}-\d{1,2}

四:修饰符

作用:

用于限定正则表达式匹配时的某些细节

语法格式:

/表达式/修饰符

两种修饰符如下:

i是单词ignore的缩写,正则匹配时字母不区分大小写

g是单词global的缩写,匹配字符串中满足正则表达式的所有结果

console.log(/A/i.test('A'))//true

replace方法

语法:

字符串.replace(/正则表达式/,'替换的文本')

五:综合案例

需求以及实现:

要求用户名要用英文字母、数字、下划线或短横线组成,并且用户名长度位6~16位

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    span {
      display: inline-block;
      width: 250px;
      height: 30px;
      vertical-align: middle;
      line-height: 30px;
      padding-left: 15px;
    }

    .error {
      color: red;
      background: url(./images/error1.png) no-repeat left center;
    }

    .right {
      color: green;
      background: url(./images/right.png) no-repeat left center;
    }
  </style>
</head>

<body>
  <input type="text">
  <span></span>
  <script>
    const reg = /^[a-zA-Z0-9-_]{6,16}/
    const input = document.querySelector('input')
    const span = document.querySelector('span')
    input.addEventListener('blur', function () {
      if (reg.test(this.value)) {
        input.nextElementSibling.innerHTML = '输入正确'
        span.classList.remove('error')
        span.classList.add('right')
        //span.className = 'right'

      } else {
        input.nextElementSibling.innerHTML = '输入错误'
        span.classList.remove('right')
        span.classList.add('error')
      }
    })
  </script>
</body>

</html>

效果图:

素材:

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

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

相关文章

【C++课程学习】:类和对象(拷贝构造和运算符重载)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;C课程学习 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 ✍拷贝构造&#xff1a; &#x1f349;特点一&#xff1a; &#x1f349;特点二&#xff1a; &…

消息中间件比较:Redis,Kafka和RabbitMQ

对微服务使用异步通信时&#xff0c;通常使用消息代理。代理确保不同微服务之间的通信可靠且稳定&#xff0c;消息在系统内得到管理和监控&#xff0c;并且消息不会丢失。您可以从几个消息代理中进行选择&#xff0c;它们的规模和数据功能各不相同。这篇博文将比较三种最受欢迎…

基于深度图像的无监督目标跟踪

概要 大致的步骤 深度图像获取:通过深度传感器(例如ToF相机、双目相机等)获取场景的深度图像。深度图转scanscan转pointcloud点云聚类卡尔曼滤波预测匈牙利算法匹配目标ID更新深度图转scan 参考这篇博客 scan转pointcloud

科技云报道:“元年”之后,生成式AI将走向何方?

科技云报道原创。 近两年&#xff0c;以大模型为代表的生成式AI技术&#xff0c;成为引爆数字原生最重要的技术奇点&#xff0c;人们见证了各类文生应用的进展速度。Gartner预测&#xff0c;到2026年&#xff0c;超过80%的企业将使用生成式AI的API或模型&#xff0c;或在生产环…

C++基础(二)

选择结构 选择结构是用来控制程序流程&#xff0c;使得程序可以根据不同的条件执行不同的代码块。 if语句 简单结构 if (表达式) { // 表达式为真时执行的语句。 } else { // 表达式为假时执行的语句。 } #include <iostream> #include <string>using namespace s…

卫星通讯传输电力运维巡检EasyCVR视频汇聚平台智能监控方案

随着科技的快速发展&#xff0c;视频监控技术已广泛应用于各个领域。而卫星通讯作为一种高效、稳定的通信方式&#xff0c;为视频监控系统的远程传输提供了有力支持。 一、方案背景 随着电力行业的快速发展&#xff0c;电力运维巡检工作变得愈发重要。传统的巡检方式往往受到…

知识图谱的应用---新零售

文章目录 新零售知识图谱构建过程典型应用 新零售 新零售&#xff0c;即个人、企业以互联网为依托&#xff0c;通过运用大数据、人工智能等先进技术手段并运用心理学知识&#xff0c;对商品的生产、流通与销售过程进行升级改造&#xff0c;进而重塑业态结构与生态圈&#xff0c…

镜舟科技携手中通快运,入选 2024 爱分析·数据库应用实践报告

典型案例&#xff1a;中通快运重构数据中心&#xff0c;满足业务多种复杂分析需求 中通快运成立于2016年&#xff0c;是中通品牌旗下快运企业&#xff0c;聚焦数智物流新趋势&#xff0c; 提供面向企业及个人客户的全链路一站式物流服务。目前中通快运全国揽派件网点有21000 余…

MySQL存储引擎详述:InnoDB为何胜出?

MySQL作为当前最流行的开源关系型数据库之一,其强大的功能和良好的性能使其广泛应用于各种规模的应用系统中。其中,存储引擎的设计理念是MySQL数据库灵活高效的关键所在。 一、什么是存储引擎 存储引擎是MySQL架构的重要组成部分,负责MySQL中数据的存储和提供了视图,存储过程等…

大疆智图_空三二维重建成果传输

一、软件环境 1.1 所需软件 1、 大疆智图&#xff1a;点击下载&#xff1b;   2、 ArcGIS Pro 3.1.5&#xff1a;点击下载&#xff0c;建议使用IDM或Aria2等多线程下载器&#xff1b;   3、 IDM下载器&#xff1a;点击下载&#xff0c;或自行搜索&#xff1b;   4、 Fas…

初出茅庐的小李博客之CJSON库解析心知天气数据

心知天气数据JSON格式介绍 JSON格式介绍http://t.csdnimg.cn/pJX1n 下面代码是利用CJSON库进行数据解析 解析代码 #include <stdio.h> #include <string.h> #include "cJSON.h" // 假设你的CJSON库头文件路径是正确的int main(void) {// 提供的JSON…

LLM基础介绍

文章目录 一、语言模型1、概念2、预训练语言模型3、NLP4、benchmark1&#xff09;概念2&#xff09;GLUE 5、TPU6、语料 二、神经网络1、概念2、训练神经网络3、案例&#xff1a;word2vec3、RNN&#xff08;循环神经网络&#xff09;4、GRU5、LSTM&#xff08;长短时记忆网络&a…

SLT简介【简单介绍SLT】

SLT简介 在c的学习当中STL的学习是一个很重要的一环&#xff0c;但是STL又是一个庞大的章节&#xff0c;因此这里我们先简单介绍一下STL&#xff0c;有助于后面我们对STL的学习&#xff0c;这里就是做一个简单的介绍&#xff0c;并无干货。 1.什么是STL STL(standard templa…

Python自动化测试框架pytest的详解安装与运行

1. pytest的介绍 pytest是一个非常成熟的全功能的python测试工具&#xff0c;它主要有以下特征&#xff1a; 简单灵活&#xff0c;容易上手&#xff1b; 支持简单的单元测试和复杂的功能测试 显示详细的断言失败信息 能自动识别测试模块和测试功能 有测试会话、测试模块、…

【全开源】多平台租房系统源码(Fastadmin+ThinkPHP+Uniapp)

&#x1f3e0;多平台租房系统&#xff1a;一站式租房新体验&#x1f50d; &#x1f310;一、引言&#xff1a;租房市场的变革 在快节奏的现代生活中&#xff0c;租房已成为许多人解决居住问题的首选。然而&#xff0c;传统的租房方式往往繁琐且效率低下。随着互联网的飞速发展…

1996-2023年各省农林牧渔总产值数据(无缺失)

1996-2023年各省农林牧渔总产值数据&#xff08;无缺失&#xff09; 1、 时间&#xff1a;1996-2023年 2、 来源&#xff1a;国家统计局、统计年鉴 3、 指标&#xff1a;农林牧渔总产值 4、 范围&#xff1a;31省 5、 缺失情况&#xff1a;无缺失 6、 指标解释&…

【课程总结】Day7:深度学习概述

前言 本篇文章&#xff0c;我们将通过示例来逐步学习理解导数、求函数最小值、深度学习的本质、以及使用numpy和pytorch实操深度学习训练过程。 线性回归 线性回归内容回顾 在《【课程总结】Day5(下)&#xff1a;PCA降维、SVD分解、聚类算法和集成学习》中&#xff0c;我们…

6.Hugging Face Transformers 快速入门

Hugging Face Transformers 库独特价值 丰富的预训练模型&#xff1a;提供广泛的预训练模型&#xff0c;如BERT、GPT、T5等&#xff0c;适用于各种NLP任务。易于使用&#xff1a;设计注重易用性&#xff0c;使得即使没有深厚机器学习背景的开发者也能快速上手。最新研究成果的…

数据结构下的线性回归模型

文章目录 1. 线性回归模型的基本概念与原理2. 数据结构在构建线性回归模型中的应用2.1 数组和矩阵2.2 列表2.3 字典2.4 数据框架 3. 线性回归模型的实现方法4. 示例代码演示总结 线性回归是统计学中最基础也是应用最广泛的预测模型之一&#xff0c;主要用于分析两个或两个以上变…

Unity图集

概述 相信在同学们学习过程中&#xff0c;在UI的的使用时候一定经常听说过图集的概念。 Unity有UI的组件&#xff0c;有同学们好奇&#xff0c;那为什么还要使用图集呢&#xff1f; 这就需要提到一个性能优化的问题了&#xff0c;因为过多的UI图片&#xff0c;会大幅增加Dra…