当前位置: 首页 > 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;新…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的&#xff0c;启动是正常的&#xff0c; 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...