JavaScrpt_13 Web API 正则表达式

news2024/9/21 20:31:38

JavaScrpt_13 Web API 正则表达式

  • 一、 正则表达式
    • 1. 正则基本使用
    • 2. 元字符
      • 边界符
      • 量词
      • 范围
      • 字符类
    • 3. 替换和修饰符
    • 4. change 事件
    • 5. 判断是否有类

一、 正则表达式

正则表达式(Regular Expression)是一种字符串匹配的模式(规则)

使用场景:

  • 例如验证表单:手机号表单要求用户只能输入11位的数字 (匹配)
  • 过滤掉页面内容中的一些敏感词(替换),或从字符串中获取我们想要的特定部分(提取)等

1. 正则基本使用

  1. 定义规则

    const reg =  /表达式/
    
    • 其中/ /是正则表达式字面量
    • 正则表达式也是对象
  2. 使用正则

    • test()方法 用来查看正则表达式与指定的字符串是否匹配
    • 如果正则表达式与指定的字符串匹配 ,返回true,否则false
<body>
  <script>
    // 正则表达式的基本使用
    const str = 'web前端开发'
    // 1. 定义规则
    const reg = /web/

    // 2. 使用正则  test()
    console.log(reg.test(str))  // true  如果符合规则匹配上则返回true
    console.log(reg.test('java开发'))  // false  如果不符合规则匹配上则返回 false
  </script>
</body>

2. 元字符

  1. 普通字符:
  • 大多数的字符仅能够描述它们本身,这些字符称作普通字符,例如所有的字母和数字。
  • 普通字符只能够匹配字符串中与它们相同的字符。
  • 比如,规定用户只能输入英文26个英文字母,普通字符的话 /[abcdefghijklmnopqrstuvwxyz]/
  1. 元字符(特殊字符)
  • 是一些具有特殊含义的字符,可以极大提高了灵活性和强大的匹配功能。
  • 比如,规定用户只能输入英文26个英文字母,换成元字符写法: /[a-z]/

边界符

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6L1oP4eR-1688945515336)(assets/1676080081650.png)]

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

<body>
  <script>
    // 元字符之边界符
    // 1. 匹配开头的位置 ^
    const reg = /^web/
    console.log(reg.test('web前端'))  // true
    console.log(reg.test('前端web'))  // false
    console.log(reg.test('前端web学习'))  // false
    console.log(reg.test('we'))  // false

    // 2. 匹配结束的位置 $
    const reg1 = /web$/
    console.log(reg1.test('web前端'))  //  false
    console.log(reg1.test('前端web'))  // true
    console.log(reg1.test('前端web学习'))  // false
    console.log(reg1.test('we'))  // false  

    // 3. 精确匹配 ^ $
    const reg2 = /^web$/
    console.log(reg2.test('web前端'))  //  false
    console.log(reg2.test('前端web'))  // false
    console.log(reg2.test('前端web学习'))  // false
    console.log(reg2.test('we'))  // false 
    console.log(reg2.test('web'))  // true
    console.log(reg2.test('webweb'))  // flase 
  </script>
</body>

量词

量词用来设定某个模式重复次数

在这里插入图片描述

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

<body>
  <script>
    // 元字符之量词
    // 1. * 重复次数 >= 0 次
    const reg1 = /^w*$/
    console.log(reg1.test(''))  // true
    console.log(reg1.test('w'))  // true
    console.log(reg1.test('ww'))  // true
    console.log('-----------------------')

    // 2. + 重复次数 >= 1 次
    const reg2 = /^w+$/
    console.log(reg2.test(''))  // false
    console.log(reg2.test('w'))  // true
    console.log(reg2.test('ww'))  // true
    console.log('-----------------------')

    // 3. ? 重复次数  0 || 1 
    const reg3 = /^w?$/
    console.log(reg3.test(''))  // true
    console.log(reg3.test('w'))  // true
    console.log(reg3.test('ww'))  // false
    console.log('-----------------------')


    // 4. {n} 重复 n 次
    const reg4 = /^w{3}$/
    console.log(reg4.test(''))  // false
    console.log(reg4.test('w'))  // flase
    console.log(reg4.test('ww'))  // false
    console.log(reg4.test('www'))  // true
    console.log(reg4.test('wwww'))  // false
    console.log('-----------------------')

    // 5. {n,} 重复次数 >= n 
    const reg5 = /^w{2,}$/
    console.log(reg5.test(''))  // false
    console.log(reg5.test('w'))  // false
    console.log(reg5.test('ww'))  // true
    console.log(reg5.test('www'))  // true
    console.log('-----------------------')

    // 6. {n,m}   n =< 重复次数 <= m
    const reg6 = /^w{2,4}$/
    console.log(reg6.test('w'))  // false
    console.log(reg6.test('ww'))  // true
    console.log(reg6.test('www'))  // true
    console.log(reg6.test('wwww'))  // true
    console.log(reg6.test('wwwww'))  // false

    // 7. 注意事项: 逗号两侧千万不要加空格否则会匹配失败

  </script>

范围

表示字符的范围,定义的规则限定在某个范围,比如只能是英文字母,或者数字等等,用表示范围

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vOYZRckw-1688945515339)(assets/1676080296168.png)]

<body>
  <script>
    // 元字符之范围  []  
    // 1. [abc] 匹配包含的单个字符, 多选1
    const reg1 = /^[abc]$/
    console.log(reg1.test('a'))  // true
    console.log(reg1.test('b'))  // true
    console.log(reg1.test('c'))  // true
    console.log(reg1.test('d'))  // false
    console.log(reg1.test('ab'))  // false

    // 2. [a-z] 连字符 单个
    const reg2 = /^[a-z]$/
    console.log(reg2.test('a'))  // true
    console.log(reg2.test('p'))  // true
    console.log(reg2.test('0'))  // false
    console.log(reg2.test('A'))  // false
    // 想要包含小写字母,大写字母 ,数字
    const reg3 = /^[a-zA-Z0-9]$/
    console.log(reg3.test('B'))  // true
    console.log(reg3.test('b'))  // true
    console.log(reg3.test(9))  // true
    console.log(reg3.test(','))  // flase

    // 用户名可以输入英文字母,数字,可以加下划线,要求 6~16位
    const reg4 = /^[a-zA-Z0-9_]{6,16}$/
    console.log(reg4.test('abcd1'))  // false 
    console.log(reg4.test('abcd12'))  // true
    console.log(reg4.test('ABcd12'))  // true
    console.log(reg4.test('ABcd12_'))  // true

    // 3. [^a-z] 取反符
    const reg5 = /^[^a-z]$/
    console.log(reg5.test('a'))  // false 
    console.log(reg5.test('A'))  // true
    console.log(reg5.test(8))  // true

  </script>
</body>

字符类

某些常见模式的简写方式,区分字母和数字

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BSJjCVSt-1688945515342)(assets/1676080353637.png)]

3. 替换和修饰符

replace 替换方法,可以完成字符的替换

字符串.replace(/正则表达式/,'替换的文本')
<body>
  <script>
    // 替换和修饰符
    const str = '欢迎大家学习前端,相信大家一定能学好前端,都成为前端大神'
    // 1. 替换  replace  需求:把前端替换为 web
    // 1.1 replace 返回值是替换完毕的字符串
    // const strEnd = str.replace(/前端/, 'web') 只能替换一个
  </script>
</body>

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

  • i 是单词 ignore 的缩写,正则匹配时字母不区分大小写
  • g 是单词 global 的缩写,匹配所有满足正则表达式的结果
<body>
  <script>
    // 替换和修饰符
    const str = '欢迎大家学习前端,相信大家一定能学好前端,都成为前端大神'
    // 1. 替换  replace  需求:把前端替换为 web
    // 1.1 replace 返回值是替换完毕的字符串
    // const strEnd = str.replace(/前端/, 'web') 只能替换一个

    // 2. 修饰符 g 全部替换
    const strEnd = str.replace(/前端/g, 'web')
    console.log(strEnd) 
  </script>
</body>

4. change 事件

给input注册 change 事件,值被修改并且失去焦点后触发

5. 判断是否有类

// 添加类名
元素.classList.add('类名')
// 删除类名
元素.classList.remove('类名')
// 切换类名
元素.classList.toggle('类名')
// 判断是否包含某个类,有则返回true,没有返回false
元素.classList.contains('类名')

元素.classList.contains() 看看有没有包含某个类,如果有则返回true,么有则返回false

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

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

相关文章

12_Linux异步通知

目录 异步通知简介 驱动中的信号处理 应用程序对异步通知的处理 驱动程序编写 编写测试APP 运行测试 异步通知简介 在使用阻塞或者非阻塞的方式来读取驱动中按键值都是应用程序主动读取的,对于非阻塞方式来说还需要应用程序通过poll函数不断的轮询。最好的方式就是驱动…

【Python爬虫与数据分析】时间、日期、随机数标准库

目录 一、模块化概述 二、time库 1. 时间获取 2. 时间格式化 3. 程序计时 三、datetime库 1. datetime.datetime类 2. datetime.timedelta类 四、random库 1. 基本随机函数 2. 扩展随机函数 3. 随机时间的生成 一、模块化概述 Python程序由模块组成&#xff0c;一个…

MySQL基础篇第4章(运算符)

文章目录 1、算术运算符1.1 加法与减法运算符1.2 乘法与除法运算符1.3 求模&#xff08;求余&#xff09;运算符 2、比较运算符2.1 等号运算符2.2 安全等于<>2.3 不等于运算符2.4 空运算符2.5 非空运算符2.6 最小值运算符2.7 最大值运算符2.8 BETWEEN AND运算符2.9 IN运算…

typeScript(持续吐血版)

typeScript-02-进阶(TSVue3) 结合vue3来使用TypeScript 使用vite来创建vue3TS的项目 使用vite创建项目&#xff0c;并选择带ts的版本 npm create vitelatest my-vue-ts-app – --template vue-ts 参考链接&#xff1a;https://vuejs.org/guide/typescript/composition-api…

7.软件是怎么样炼成的:c++编译器过程

"重新生成解决方案"&#xff0c;"调试"的背后的四个阶段 故事&#xff1a; 渣男是有套路和步骤的。 代码变成软件也是有固定的套路的 总结&#xff1a; 1.预处理 g -e源程序&#xff0c;-o生成的结果。后面的a.cpp是新的源文件。这个时候还是源程序计算…

leetcode-977. 有序数组的平方

leetcode-977. 有序数组的平方 文章目录 leetcode-977. 有序数组的平方一.题目描述二.第1次提交(std::sort)三.第2次提交(左右指针) 一.题目描述 二.第1次提交(std::sort) class Solution {public:vector<int> sortedSquares(vector<int> &nums) {for (int i …

Centos或Linux编写一键式Shell脚本删除用户、组指导手册

文章目录 一、目的二、操作步骤 一、目的 本指导手册为了更加方便使用Centos或者Linux&#xff0c;并在里面删除用户、用户组。 注意点1&#xff1a;userdel命令删除该用户时&#xff0c;并不能删除该用户的所有信息&#xff0c;只是删除了/etc/passwd、/etc/shadow、/etc/gr…

Vue3 +TScript 基本开发

首先你要使用 vite 创建项目 npm init vuelatest 并选择带ts的版本 文件的结构 main.ts 文件 import { createApp } from "vue" import { createPinia } from piniaimport App from "./App.vue" const pinia createPinia() const app createApp(App)a…

map、multimap、set、multiset讲解

文章目录 &#x1f4cd;前言1. 关联式容器2. 键值对3. 树形结构的关联式容器3.1 set3.1.1 set的介绍3.1.2 set的使用 3.2 map3.2.1 map的介绍3.2.2 map的使用 3.3 muitiset3.3.1 multiset的介绍3.3.2 multiset的使用 3.4 multimap3.4.1 multimap的介绍3.4.2 multimap的使用 3.5…

山西电力市场日前价格预测【2023-07-10】

日前价格预测 预测明日&#xff08;2023-07-10&#xff09;山西电力市场全天平均日前电价为374.23元/MWh。其中&#xff0c;最高日前价格为417.10元/MWh&#xff0c;预计出现在19: 45。最低日前电价为323.51元/MWh&#xff0c;预计出现在13: 30。 价差方向预测 1&#xff1a;实…

利用VitePress部署静态网站

前言 之前看到过很多这样的静态网站&#xff0c;基于Markdown格式&#xff0c;风格基本统一&#xff0c;而且这种网站非常常见&#xff0c;例如&#xff1a; 例如&#xff0c;以下的几个网址&#xff1a; Java HashMap 源码分析 | 未读代码BAT大厂面试题与全栈知识体系结合…

实践:devops之K8s环境持续部署

实践&#xff1a;devops之K8s环境持续部署 目录 推荐文章 https://www.yuque.com/xyy-onlyone/aevhhf?# 《玩转Typora》 1、Kubectl 发布流水线 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X2Q6MzL1-1688896509292)(https://bucket-hg.oss-cn-…

【唯一分解】A因子

A-因子_Wannafly挑战赛25 (nowcoder.com) 题意&#xff1a; 思路&#xff1a; Code&#xff1a; #include <bits/stdc.h>#define int long longusing namespace std;const int mxn1e510; const int mxe1e610; const int mod1e97; const int Inf1e18;int N,K; int len0;…

8 Java自增和自减

自增&#xff1a;i或i。 自减&#xff1a;i--或--i。 两种自增和自减的写法是有区别的&#xff0c;以自增为例子。i是先把未自增的i赋值给左边&#xff0c;i再进行自增&#xff0c;而i是先自增&#xff0c;再把自增后的i赋值给左边。自减的道理也是如此。 i的情况如下代码所示&…

webpack5高级配置

webpack多入口 注意&#xff1a;webpack5基本配置只是打包产出一个html文件 &#xff0c;想要产出多个html就需要进行过入口的配置 webpack.common.js 注意&#xff1a;公共文件中的入口需要引入两个js文件 entry: {index:path.join(srcPath, index.js),other:path.join(src…

数据库MySQL基础

1、MySQL概述 相关概念 版本 2、SQL语言 2.0 数据类型 数值型 字符型 日期型 2.1 SQL通用语法 SQL语句可以单行或多行书写&#xff0c;以分号结尾。SQL语句可以使用空格/缩进来增强语句的可读性。MySQL数据库的SQL语句不区分大小写&#xff0c;关键字建议使用大写。注释: …

Unity零基础到进阶 ☀️| 视频播放器 Video Player组件 详解

【Unity3D组件使用指南】视频播放器VideoPlayer组件 详解一、组件介绍二、组件属性面板三、代码操作组件四、组件常用方法示例1.直接在Camera上渲染视频2.在RawImage上播放视频3.在3D物体上播放视频五、组件相关扩展1.做一个简易的视频播放器2.视频画面残留问题总结🎬 博客主…

C#学习之路-数据类型

在 C# 中&#xff0c;变量分为以下几种类型&#xff1a; 值类型&#xff08;Value types&#xff09;引用类型&#xff08;Reference types&#xff09;指针类型&#xff08;Pointer types&#xff09; 值类型&#xff08;Value types&#xff09; 值类型变量可以直接分配给…

flink的并行概念和数据交换策略

flink的并行 flink的并行包括三种并行&#xff1a; 第一种是数据并行&#xff0c;也就是不同的任务处理数据的不同部分&#xff0c;进行数据拆分 第二种是任务并行&#xff0c;也就是不同/相同算子的不同任务并行执行&#xff0c;互不影响 第三种是作业并行&#xff0c;也就是…

IDEA+springboot+mybatis+shiro+bootstrap+Mysql WMS仓库管理系统

IDEAspringbootmybatisshirobootstrapMysql WMS仓库管理系统 一、系统介绍1.环境配置 二、系统展示1. 管理员登录2.修改密码3.系统日志4. 登陆日志5. 库存查询6. 出入库记录7.货物入库8.货物出库9.仓库管理员管理10.供应商信息管理11.客户信息管理12.货物信息管理13. 仓库信息管…