JavaScript学习文档(12):什么是正则表达式、语法、元字符、修饰符

news2024/9/21 0:49:26

目录

一、正则表达式

1、什么是正则表达式

2、语法

3、元字符

(1)边界符

(2)量词

(3)字符类:

(4)用户名验证案例

4、修饰符

(1)过滤敏感字


一、正则表达式

1、什么是正则表达式

  • 正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象
  • 通常用来查找、替换那些符合正则表达式的文本
  • 其使用场景:

(1)例如验证表单:用户名表单只能输入英文字母、数字或者下划线, 昵称输入框中可以输入中文

(2)过滤掉页面内容中的一些敏感词,或从字符串中获取我们想要的特定部分等

2、语法

  • JavaScript 中定义正则表达式的语法有两种,我们先学习其中比较简单的方法:
  • 语法:

const 变量名 = /表达式/    其中 / / 是正则表达式字面量

  • 判断是否有符合规则的字符串

test() 方法 用来查看正则表达式与指定的字符串是否匹配

  • 语法:

regObj.test(被检测的字符串)

  • 检索(查找)符合规则的字符串:

exec() 方法 在一个指定字符串中执行一个搜索

  • 语法:

regObj.exec(被检测字符串)

示例代码如下:

    const str = '我们在学习前端,希望学习前端能顺利毕业'
    // 正则表达式使用:
    // 1. 定义规则
    const reg = /前端/
    // 2. 是否匹配
    // console.log(reg.test(str))  // true
    // 3. exec()
    console.log(reg.exec(str))  // 返回数组

3、元字符

  • 普通字符::大多数的字符仅能够描述它们本身,这些字符称作普通字符,例如所有的字母和数字。 也就是说普通字符只能够匹配字符串中与它们相同的字符。
  • 元字符(特殊字符) 是一些具有特殊含义的字符,可以极大提高了灵活性和强大的匹配功能。  比如,规定用户只能输入英文26个英文字母,普通字符的话 abcdefghijklm….. 但是换成元字符写法: [a-z]
(1)边界符
  • 正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符

如果 ^ 和 $ 在一起,表示必须是精确匹配

  • 正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符
(2)量词
  • 量词用来设定某个模式出现的次数

注意: 逗号左右两侧千万不要出现空格

(3)字符类:
  • [ ] 匹配字符集合
  • 后面的字符串只要包含 abc 中任意一个字符,都返回 true 。
  • [ ] 里面加上 - 连字符
  • 使用连字符 - 表示一个范围
  • [ ] 里面加上 ^ 取反符号
  • 点(.) 匹配除换行符之外的任何单个字
  • 预定义:指的是 某些常见模式的简写方式

(4)用户名验证案例

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

分析:

①:首先准备好这种正则表达式模式 /^[a-zA-Z0-9-_]{6,16}$/

②:当表单失去焦点就开始验证

③:如果符合正则规范, 则让后面的span标签添加 right 类.

④:如果不符合正则规范, 则让后面的span标签添加 wrong 类

示例代码如下:

    <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>
    <input type="text">
    <span></span>
    <script>
        // 1. 准备正则
        const reg = /^[a-zA-Z0-9-_]{6,16}$/
        const input = document.querySelector('input')
        const span = input.nextElementSibling
        input.addEventListener('blur', function () {
            // console.log(reg.test(this.value))
            if (reg.test(this.value)) {
                span.innerHTML = '输入正确'
                span.className = 'right'
            } else {
                span.innerHTML = '请输入6~16位的英文数字下划线'
                span.className = 'error'
            }
        })
    </script>

4、修饰符

  • 修饰符约束正则执行的某些细节行为,如是否区分大小写、是否支持多行匹配等
  • 语法:

/表达式/修饰符

  •  i 是单词 ignore 的缩写,正则匹配时字母不区分大小写
  • g 是单词 global 的缩写,匹配所有满足正则表达式的结果
  • 替换 replace 替换
  • 语法:

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

示例代码如下:

  <script>
    console.log(/^java$/.test('java'))
    console.log(/^java$/i.test('JAVA'))
    console.log(/^java$/i.test('Java'))
    const str = 'java是一门编程语言, 学完JAVA工资很高'
    // const re = str.replace(/java|JAVA/g, '前端')
    const re = str.replace(/java/ig, '前端')
    console.log(re)  // 前端是一门编程语言, 学完前端工资很高
  </script>
(1)过滤敏感字

需求:要求用户不能输入敏感字

分析: ①:用户输入内容

②:内容进行正则替换查找,找到敏感词,进行**

③:要全局替换使用修饰符 g

示例代码如下:

  <textarea name="" id="" cols="30" rows="10"></textarea>
  <button>发布</button>
  <div></div>
  <script>
    const tx = document.querySelector('textarea')
    const btn = document.querySelector('button')
    const div = document.querySelector('div')
    btn.addEventListener('click', function () {
      // console.log(tx.value)
      div.innerHTML = tx.value.replace(/激情|基情/g, '**')
      tx.value = ''
    })
  </script>

5、change事件

示例代码如下:

  <input type="checkbox" name="" id="">
  <script>
    // change 事件 内容发生了变化
    const input = document.querySelector('input')
    input.addEventListener('change', function () {
      console.log(111)
    })
  </script>

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

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

相关文章

数据解读——基于《择偶偏好中的性别差异和社会阶层异质性——基于选择实验法的探索》

原始文章&#xff1a;《择偶偏好中的性别差异和社会阶层异质性——基于选择实验法的探索》 参考文章&#xff1a;条件Logistic回归模型 这是一篇关于研究不同性别&#xff0c;不同阶层(城乡户口&#xff1b;受教育程度)在择偶偏好上的差异的文章&#xff0c;择偶偏好包含以下6…

实际开发中git在IDEA中的使用

相信搜索这个的同学代码都已经拉取到本地了&#xff0c;并且已经在idea中打开了。 1.一般我们从远程colone下来的代码默认是在主分支下的&#xff0c;也就是说我们从远程的主分支拉取的代码并且在本地创建了一个主分支。 2.一般主分支是不允许修改的&#xff0c;所以我们可以基…

Guitar Pro v8.1最新图文安装教程

在音乐的世界里&#xff0c;GuitarPro 8无疑是一款让人眼前一亮的神器。它不仅为吉他爱好者提供了前所未有的便捷&#xff0c;更以其强大的功能和实用性&#xff0c;成为了音乐创作与学习不可或缺的工具。这篇文章将深度解析GuitarPro 8的独特之处&#xff0c;探讨它如何改变音…

测试:TestGRPCDiscovery

目录 测试:TestGRPCDiscovery 类定义 方法 async def asyncSetUp(self): async def asyncTearDown(self): async def test_discovery(self): 总结 这是一个关于算力共享中环形结构通讯机制的项目图的功能模型解释。以下是根据所给信息对项目功能的概述: 项目结构: 项…

使用deekpseek v2开发中国象棋游戏

使用AI可以完成简单程序&#xff08;如&#xff1a;五子棋&#xff09;&#xff0c;甚至都不要调试即可以运行&#xff0c;但逻辑规则复杂的程序就需要反复的调整&#xff0c;修改运行BUG&#xff0c;优化运行性能。&#xff08;如&#xff1a;中国象棋&#xff0c;支持提示目标…

NVIDIA H200与AMD MI300X:前者高利润率是否合理?

近年来&#xff0c;人工智能芯片巨头NVIDIA与AMD的竞争愈发激烈。尽管NVIDIA在AI计算解决方案市场占据主导地位&#xff0c;但在2023年末&#xff0c;AMD推出号称全球最快的AI芯片Instinct MI300X后&#xff0c;开始对NVIDIA构成了挑战。然而&#xff0c;经过一段时间的市场检验…

Sevenstar CS200A使用简明教程(485通信类型变送器)

该文章仅供参考&#xff0c;编写人不对任何实验设备、人员及测量结果负责&#xff01;&#xff01;&#xff01; 文章主要介绍流量计的硬件连接、软件配置、数据读写以及流量计气体计算。 1 硬件连接 2 软件配置 将流量计硬件部分正确连接后&#xff1a; 打开“CS200单台控…

scrapy 爬取微博(一)【最新超详细解析】:创建微博爬取工程

本项目属于个人学习记录&#xff0c;爬取的数据会于12小时内销毁&#xff0c;且不可用于商用。 1 初始化环境 首先我们需要有python环境&#xff0c;先安装一下python&#xff0c;然后配置环境变量&#xff0c;这边给出windows的配置&#xff1a; 我这边的安装目录是D:\pyt…

逆向工程核心原理 Chapter 21 | Windows消息钩取

开始DLL注入章节的学习。 知识点学习 消息钩子 这里主要是要弄明白Windows GUI程序的工作模式/流程。 GUI以事件驱动方式工作。核心概念&#xff1a;message queue 最具代表性的&#xff1a;MS提供的spy SetWindowsHookEX() SetWindowsHookExA 函数 (winuser.h) - Win32 a…

基于图片识别的摄影作品展示平台

一、项目概述 Hi&#xff0c;大家好&#xff0c;今天分享的项目是《基于图片识别的摄影作品展示平台》。 摄影作品展示平台为用户提供了一个实践和应用所学摄影知识的机会&#xff0c;通过这个平台&#xff0c;用户可以上传摄影作品&#xff0c;平台能根据用户上传的图片自动…

【初出江湖】分布式之什么是分布式存储?

目录标题 分布式存储分布式存储系统特点分布式存储原理分布式存储的应用场景分布式存储和集中式存储的区别 分布式存储 分布式存储是一种将数据分散存储在多个节点上的存储方式。与传统的集中式存储相比&#xff0c;分布式存储将数据分布在多个节点上&#xff0c;每个节点都可…

我司总经理张戈参加第十届中国车联网大会暨智慧交通博览会

我司总经理张戈参加第十届中国车联网大会暨智慧交通博览会 第十届中国&#xff08;大湾区&#xff09;车联网大会暨智慧交通博览会于8月23日隆重举行&#xff0c;此次大会聚焦于前沿技术、行业热点、产业生态以及企业创新等多个方面。会议深入探讨了“车路云一体化”、5G技术、…

使用docker容器部署考试系统

8.30 回顾 1、使用harbor仓库 python --version yum -y update yum -y install python2-pip 部署考试系统 使用docker部署project-exam-system 1、在一台主机内&#xff0c;实现容器的编排看&#xff0c;发布考试系统 2、环境准备 docker docker-compose docker脚本 …

华为云征文|遥遥领先的华为云Flexus云服务器X它来了~~~~

文章目录 ❀前言❀概述❀优点❀黑科技❀购买❀注册账号❀选配 ❀服务器连接 ❀前言 随着云计算时代的进一步深入&#xff0c;越来越多的中小企业企业与开发者需要一款简单易用、高能高效的云计算基础设施产品来支撑自身业务。云服务器相较于于实体服务器&#xff0c;操作更简单…

多目标应用:基于双存档模型的多模态多目标进化算法(MMOHEA)的移动机器人路径规划研究(提供MATLAB代码)

一、机器人路径规划介绍 移动机器人&#xff08;Mobile robot&#xff0c;MR&#xff09;的路径规划是 移动机器人研究的重要分支之&#xff0c;是对其进行控制的基础。根据环境信息的已知程度不同&#xff0c;路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…

DPDK简介及相关资料整理

DPDK全称为Date planedevelopment kit&#xff0c;是一个用来进行包数据处理加速的软件库。与传统的数据包处理相比&#xff0c;DPDK具有以下特点&#xff1a; 1) 轮询&#xff1a;在包处理时避免中断上下文切换的开销&#xff0c; 2) 用户态驱动&#xff1a;规避不必要的内存…

如何定义核心场景用例?

​首先我们解决两个问题&#xff1a; 1.什么是场景测试&#xff1f; 2.什么是核心场景&#xff1f; 1、什么是场景测试&#xff1f; &#x1f3af; 1.1&#xff1a;什么是场景 事件触发时的情景形成了场景。场景必不可少的几个要素&#xff1a;环境、人、时间、行为。简而…

3.7 移位指令

&#x1f393; 微机原理考点专栏&#xff08;通篇免费&#xff09; 欢迎来到我的微机原理专栏&#xff01;我将帮助你在最短时间内掌握微机原理的核心内容&#xff0c;为你的考研或期末考试保驾护航。 为什么选择我的视频&#xff1f; 全程考点讲解&#xff1a;每一节视频都…

JAVA进阶学习14

文章目录 常用工具包commons-ioHutool工具包一、多线程1.1 多线程的实现方法1.2 多线程常见的成员方法1.3 线程的安全问题1.4 同步方法1.5 lock锁1.6 线程的死锁1.7 生产者消费者问题&#xff08;等待唤醒机制&#xff09;1.8 阻塞队列——同样解决生产和消费的问题1.9 线程的状…

【5G PHY】5G循环前缀(CP)设计思路简述

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G技术研究。 博客内容主要围绕…