当前位置: 首页 > news >正文

JavaScript |(四)正则表达式 | 尚硅谷JavaScript基础实战

学习来源:尚硅谷JavaScript基础&实战丨JS入门到精通全套完整版

文章目录

  • 📚正则表达式
  • 📚正则表达式字面量方式
  • 📚字符串&正则表达式
    • 🐇split()
    • 🐇search()
    • 🐇match()
    • 🐇replace()
  • 📚正则表达式相关语法
    • 🐇量词
    • 🐇检查开头结尾
    • 🐇手机号规则
    • 🐇邮件检测
    • 🐇检测字符

📚正则表达式

  • 正则表达式用于定义一些字符串的规则,计算机可以根据正则表达式,来检查一个字符串是否符合规则,或者将字符串中符合规则的内容提取出来。
  • 创建正则表达式的对象var 变量 = new RegExp("正则表达式","匹配模式");,例如:var reg = new RegExp("a");这个正则表达式可以来检查一个字符串中是否含有a。
  • 使用typeof检查正则对象,会返回object。
  • test()方法:这个方法可以用来检查一个字符串是否符合正则表达式的规则,如果符合则返回true,否则返回false。
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script type="text/javascript">//建一个忽略大小写的正则表达式对象,匹配模式为 "ab"var reg = new RegExp("ab","i");var str = "a";var result = reg.test(str);// ​"ab"​ 中的 ​"b"​ 并不在字符串 ​"a"​ 中存在,以下同理console.log(result);//falseconsole.log(reg.test("Ac"));//false</script></head><body></body>
</html>

📚正则表达式字面量方式

  • 语法:var 变量 = /正则表达式/匹配模式
  • 使用字面量的方式创建更加简单,使用构造函数创建更加灵活。
  • []里的内容也是或的关系
    • [ab] == a|b
    • [a-z] 任意小写字母
    • [A-Z] 任意大写字母
    • [A-z] 任意字母
    • [0-9] 任意数字
    • [^ ] 除了
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script type="text/javascript">//var reg = new RegExp("a","i");var reg = /a/i;console.log(reg.test("abc"));//true//创建一个正则表达式,检查一个字符串中是否有a或b//使用 | 表示或者的意思reg = /a|b|c/;//创建一个正则表达式检查一个字符串中是否有字母reg = /[A-z]/;//检查一个字符串中是否含有 abc 或 adc 或 aecreg = /a[bde]c/;//[^ ] 除了reg = /[^ab]/;reg = /[^0-9]/;//包含字母"a",而不仅仅是数字console.log(reg.test("12a3456"));//true</script></head><body></body>
</html>

📚字符串&正则表达式

🐇split()

  • 可以将一个字符串拆分为一个数组。
  • 方法中可以传递一个正则表达式作为参数,这样方法将会根据正则表达式去拆分字符串。
  • 这个方法即使不指定全局匹配,也会全都插分。
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script type="text/javascript">var str = "1a2b3c4d5e6f7";//根据任意字母来将字符串拆分var result = str.split(/[A-z]/);console.log(result);</script></head><body></body>
</html>

在这里插入图片描述

🐇search()

  • 可以搜索字符串中是否含有指定内容
  • 如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到返回-1。
  • 它可以接受一个正则表达式作为参数,然后会根据正则表达式去检索字符串。
  • serach()只会查找第一个,即使设置全局匹配也没用。
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script type="text/javascript">str = "hello abc hello aec afc";//搜索字符串中是否含有abc 或 aec 或 afcresult = str.search(/a[bef]c/);console.log(result);//6</script></head><body></body>
</html>

🐇match()

  • 可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
  • 默认情况下我们的match只会找到第一个符合要求的内容,找到以后就停止检索。
  • 我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容
  • 可以为一个正则表达式设置多个匹配模式,且顺序无所谓。
  • match()会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果。
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script type="text/javascript">str = "1a2a3a4a5e6f7A8B9C";result = str.match(/[a-z]/ig);console.log(result);</script></head><body></body>
</html>

在这里插入图片描述

🐇replace()

  • 可以将字符串中指定内容替换为新的内容
  • 参数
    • 1.被替换的内容,可以接受一个正则表达式作为参数
    • 2.新的内容
    • 默认只会替换第一个
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script type="text/javascript">str = "1a2a3a4a5e6f7A8B9C";result = str.replace(/[a-z]/gi , "@_@");console.log(result);//1@_@2@_@3@_@4@_@5@_@6@_@7@_@8@_@9@_@</script></head><body></body>
</html>

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title></title><script type="text/javascript">var str = prompt("请输出任意的内容:");str = str.split("").reverse().join("");alert(str);</script></head><body></body>
</html>

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

📚正则表达式相关语法

🐇量词

  • 通过量词可以设置一个内容出现的次数
  • 量词只对它前边的一个内容起作用
  • {n} 正好出现n次
  • {m,n} 出现m~n次
  • {m,} m次以上
  • + 至少一个,相当于{1,}
  • * 0个或多个,相当于{0,}
  • ? 0个或1个,相当于{0,1}
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script type="text/javascript">// 创建一个正则表达式检查一个字符串中是否含有aaavar reg = /a{3}/;// false,"abbc"中不含有连续的三个'a'console.log(reg.test("abbc")); // true,"aaabbc"中含有连续的三个'a'console.log(reg.test("aaabbc")); reg = /ab{1,3}c/;// true,"abaabbc"中含有'a'后跟着1到3个'b',再后是'c'console.log(reg.test("abaabbc")); reg = /a{3,}c/;// false,"aaabbc"中含有连续的三个'a',但接着是'b'console.log(reg.test("aaabbc")); reg = /ab+c/;// true,"aaabbc"中含有'a'后跟着至少一个'b',再后是'c'console.log(reg.test("aaabbc")); reg = /ab*c/;// true,"aaabbc"中含有'a'后跟着任意个'b'(可能是0个),再后是'c'console.log(reg.test("aaabbc")); // false,"aaabbc"中含有'a',但后跟着不是0或1个'b',再后是'c'reg = /ab?c/;console.log(reg.test("aaabbc")); </script></head><body></body>
</html>

🐇检查开头结尾

  • ^ 表示开头
  • $ 表示结尾
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script type="text/javascript">reg = /^a/; //匹配开头的aconsole.log(reg.test("abcabca"));//truereg = /a$/; //匹配结尾的aconsole.log(reg.test("abcabca"));//true//如果在正则表达式中同时使用^ $则要求字符串必须完全符合正则表达式reg = /^a$/;console.log(reg.test("bbca"));//false</script></head><body></body>
</html>

🐇手机号规则

  1. 以1开头
  2. 第二位3-9任意数字
  3. 三位以后任意数字9个

^1 [3-9] [0-9]{9}$

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script type="text/javascript">//创建一个正则表达式,用来检查一个字符串是否是一个合法手机号var Str = "13067890123";var Str2 = "12345678909"var phoneReg = /^1[3-9][0-9]{9}$/;console.log(phoneReg.test(Str));//trueconsole.log(phoneReg.test(Str2));//false</script></head><body></body>
</html>

🐇邮件检测

  • 任意字母数字下划线 .任意字母数字下划线 @ 任意字母数字 .任意字母(2-5位) .任意字母(2-5位)
  • \w{3,} (\.\w+)* @ [A-z0-9]+ (\.[A-z]{2,5}){1,2}
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script type="text/javascript">var emailReg = /^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/;var email = "abc.hello@163.com";console.log(emailReg.test(email));//true</script></head><body></body>
</html>

🐇检测字符

  • . 表示任意字符
  • 在正则表达式中使用\作为转义字符,\. 来表示.\\ 表示\
  • 注意:使用构造函数时,由于它的参数是一个字符串,而****是字符串中转义字符,如果要使用\则需要使用\\来代替。
  • \w:任意字母、数字,_ [A-z0-9_]
  • \W:除了字母、数字,_ [^A-z0-9_]
  • \d:任意的数字, [0-9]
  • \D:除了数字, [^0-9]
  • \s:空格
  • \S:除了空格
  • \b:单词边界
  • \B:除了单词边界
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script type="text/javascript">//创建一个正则表达式检查一个字符串中是否含有单词childreg = /\bchild\b/;console.log(reg.test("hello child "));//接收一个用户的输入var str = prompt("请输入你的用户名:");//去除空格str = str.replace(/\s/g , "");console.log(str);//去除开头的空格//str = str.replace(/^\s*/, "");//去除结尾的空格//str = str.replace(/\s*$/, "");</script></head><body></body>
</html>

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

相关文章:

JavaScript |(四)正则表达式 | 尚硅谷JavaScript基础实战

学习来源&#xff1a;尚硅谷JavaScript基础&实战丨JS入门到精通全套完整版 文章目录 &#x1f4da;正则表达式&#x1f4da;正则表达式字面量方式&#x1f4da;字符串&正则表达式&#x1f407;split()&#x1f407;search()&#x1f407;match()&#x1f407;replace()…...

docker-compose实现mysql主从复制

利用docker-compose实现mysql主从复制 1.首先创建挂载的目录以及配置信息 1.1 主 mkdir -p /opt/mysql/master/data mkdir -p /opt/mysql/master/config # 编写配置文件 vim /opt/mysql/master/config/my.cnfmy.cnf配置信息 [mysqld] usermysql default-storage-engineINNO…...

hbase基础

hbase安装 tar -zxvf hbase-2.4.11-bin.tar.gz -C . ln -s f hbase-2.4.11-bin hbasemv /export/server/hbase/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar /export/server/hbase/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar.bakvim conf/regionser…...

【GitOps系列】如何实施自动化渐进式交付?

文章目录 前言自动渐进式交付概述自动渐进式交付准备创建生产环境创建 AnalysisTemplate访问生产环境安装Prometheus配置 Ingress-Nginx 和 ServiceMonitor验证 Ingress-Nginx 指标 自动渐进式交付实战自动渐进式交付成功自动渐进式交付失败 结语 前言 在实施金丝雀发布的过程中…...

【网络】网络层(IP协议)

目录 一、基本概念 二、协议头格式 三、网段划分 四、特殊的IP地址 五、IP地址的数量限制 六、私有IP地址和公网IP地址 七、路由 一、基本概念 IP协议&#xff1a;提供一种能力&#xff0c; 将数据从A主机送到B主机&#xff0c;&#xff08;TCP协议&#xff1a;确保IP协议…...

Unity数字可视化学校_昼夜(一)

maya2022:链接&#xff1a;https://pan.baidu.com/s/1cvB438UKsv_tU37NsOaNow 3dmax软件合集:百度网盘 请输入提取码 1180 1、 2、unity3d 导入插件 &#xff1a; &#xff08;1&#xff09;UniStorm - Volumetric Clouds Sky 5.3.0.unitypackage &#xff08;天气&…...

QWidget样式

1、设置边框样式&#xff1a; QWidget {font-family:Microsoft YaHei UI;background:#ffffff;/*border:3px solid rgba(207, 209, 208, 170);设置整体边框*/border-bottom: 3px solid rgba(207, 209, 208, 170);/*设置底部边框*/border-top: 3px solid rgba(207, 209, 208, 1…...

TypeScript基础学习

目录 一、安装 1、下载国内镜像 2、安装 3、查看安装情况 4、使用例子 二、变量声明 1、规则 2、声明的四种方式 3、注意 4、类型断言 5、类型推断 6、变量作用域 三、基础类型&#xff08;共11种&#xff09; 1、Any 类型 2、Null 和 Undefined 3、never 类型…...

AOF日志:宕机了,Redis如何避免数据丢失

当服务器宕机后&#xff0c;数据全部丢失&#xff1a;我们很容易想到的一个解决方案是从后端数据库恢复这些数据&#xff0c;但这种方式存在两个问题&#xff1a;一是&#xff0c;需要频繁访问数据库&#xff0c;会给数据库带来巨大的压力&#xff1b;二是&#xff0c;这些数据…...

【编程】典型题目:寻找数组第K大数(四种方法对比)

【编程】典型题目&#xff1a;寻找数组第K大数&#xff08;四种方法对比&#xff09; 文章目录 【编程】典型题目&#xff1a;寻找数组第K大数&#xff08;四种方法对比&#xff09;1. 题目2. 题解2.1 方法一&#xff1a;全局排序&#xff08;粗暴&#xff09;2.2 方法二&#…...

Vue3 对比 Vue2 的变化

Vue3 对比 Vue2 的变化 1.源码组织方式变化&#xff1a;使用 TS 重写 2.支持 compositionAPI&#xff0c;基于函数的 api&#xff0c;更灵活组织组件逻辑(Vue2 使用 options api) 3.响应式系统提升&#xff1a;Vue3 的响应式数据原理改成了 Proxy&#xff0c;可以监听动态新增删…...

harbor搭建

回到目录 Harbor 是 VMware 公司开源的企业级 Docker Registry 项目&#xff0c;其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务 通俗的讲&#xff0c;harbor是一个私人镜像存储服务器 1 下载安装 进入官网&#xff0c;下载一个离线安装包,harbor官网下载 这…...

机器学习05-数据准备(利用 scikit-learn基于Pima Indian数据集作数据预处理)

机器学习的数据准备是指在将数据用于机器学习算法之前&#xff0c;对原始数据进行预处理、清洗和转换的过程。数据准备是机器学习中非常重要的一步&#xff0c;它直接影响了模型的性能和预测结果的准确性 以下是机器学习数据准备的一些常见步骤&#xff1a; 数据收集&#xff…...

【枚举+trie+dfs】CF514 C

Problem - 514C - Codeforces 题意&#xff1a; 思路&#xff1a; 其实是trie上dfs的板题 先把字符串插入到字典树中 对于每次询问&#xff0c;都去字典树上dfs 注意到字符集只有3&#xff0c;因此如果发现有不同的字符&#xff0c;去枚举新的字符 Code&#xff1a; #in…...

【计算机视觉】BLIP:统一理解和生成的自举多模态模型

文章目录 一、导读二、背景和动机三、方法3.1 模型架构3.2 预训练目标3.3 BLIP 高效率利用噪声网络数据的方法&#xff1a;CapFilt 四、实验4.1 实验结果4.2 各个下游任务 BLIP 与其他 VLP 模型的对比 一、导读 BLIP 是一种多模态 Transformer 模型&#xff0c;主要针对以往的…...

【Ansible】Ansible自动化运维工具之playbook剧本搭建LNMP架构

LNMP 一、playbooks 分布式部署 LNMP1. 环境配置2. 安装 ansble3. 安装 nginx3.1 准备 nginx 相关文件3.2 编写 lnmp.yaml 的 nginx 部分3.3 测试 nginx4. 安装 mysql4.1 准备 mysql 相关文件4.2 编写 lnmp.yaml 的 mysql 部分4.3 测试 mysql5. 安装 php5.1 编写 lnmp.yaml 的 …...

Spring中的事务

一、为什么需要事务&#xff1f; 事务定义 将一组操作封装成一个执行单元&#xff08;封装到一起&#xff09;&#xff0c;要么全部成功&#xff0c;要么全部失败。 为什么要用事务&#xff1f; 比如转账分为两个操作&#xff1a; 第一步操作&#xff1a; A 账户 -100 元…...

38 非法地址访问的 segment fault 的调试

前言 在前面一篇文章 coredump 的生成和使用 中, 我们看到 "测试用例2 - 非法地址访问" 产生了一个 segment fault 我们这里 就来调试一下 这个 segment fault 是怎么回事 测试用例 #include "stdio.h"int main(int argc, char** argv) {int x 2; i…...

c++中c_str()的用法详解

c_str()就是将C的string转化为C的字符串数组&#xff01;&#xff01;&#xff01; C中没有string&#xff0c;所以函数c_str()就是将C的string转化为C的字符串数组&#xff0c;c_str()生成一个const char *指针&#xff0c;指向字符串的首地址。 下文通过3段简单的代码比较分析…...

谈谈关于新能源汽车的话题

新能源汽车是指使用新型能源替代传统燃油的汽车&#xff0c;主要包括纯电动汽车、插电式混合动力汽车和燃料电池汽车等。随着环境污染和能源安全问题的日益突出&#xff0c;新能源汽车已经成为全球汽车行业的发展趋势。下面我们来谈谈关于新能源汽车的话题。 首先&#xff0c;新…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...

篇章二 论坛系统——系统设计

目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...