6.同步异步、正则表达式

JS执行机制

js的特点:单线程,同一时间只能做一件事
可以通过多核CPU解决这个问题,允许js脚本创建多个线程,于是js出现了同步和异步

同步

程序执行的时候按照顺序依次执行

异步

程序执行的时候,会跳过某个步骤继续向下执行
事件都属于异步
延时函数、间歇函数

事件循环

描述了计算机在执行js的时候一种状态

代码执行时,将同步代码交给执行栈,将异步代码交给队列
先执行执行栈里的同步代码,执行完同步栈里的代码,在去执行队列里的异步代码
同步代码和异步代码执行完之后计算机不会停下来,会再去执行栈里找代码
这中循环过程就叫事件循环

数组方法

数组值拼接

        let ary = ['张三', '李四', 'laoduan']// 数组值拼接// 语法:数组名.join('符号')// 要求:// 将数组中的名子输出并以=连接:张三=李四=laoduan// 返回值返回一个拼接的字符串console.log(ary.join('='))

在这里插入图片描述

映射数组

        //映射数组(照镜子)let ary2 = [100, 200, 3000, 400]// 要求:将数组中的每一个值都在原数组的基础上涨200// 语法:数组名.map(function(item,index){})// 特点:可以遍历数组,设置返回值返回的结果是一个新数组let res = ary2.map(function (item, index) {return item + 200;})console.log(res)

在这里插入图片描述

正则表达式

a)正则表达式在程序中就是一种规则
b)正则表达式就是一种符号语言:理解每一个符号表达的含义即可正则表达式应用场景
a)表单验证(用户注册,用户登录)
b)网页敏感词替换(大傻逼---》小可爱,,牛B---->牛波一)

定义正则

  //  正则表达式的使用// 步骤:// a)定义正则(规则)  语法:let 正则变量=/要求/// 注意:定义正则的时候,//不能加引号// 演示:let reg = /abc/;// 使用正则验证内容// 正则变量.test('要被验证的内容')// 正则变量.exec('要被验证的内容')// 代码演示let str = 'abc'console.log(reg.test(str))  //true表示符合这种规则console.log(reg.exec(str))  //如果返回的结果是一个数组表示符合这种规则console.log(reg.test(123))  //false表示不符合console.log(reg.exec(123))  //null表示不符合

在这里插入图片描述

正则语法解释

        // 正则表达式的验证// 只要内容中包含连续的abc就符合规则let reg = /abc/;console.log(reg.test('abc'))console.log(reg.test('abc123'))console.log(reg.test('sdasdabc123s'))

在这里插入图片描述

元字符

在正则表达式中具有特殊含义的符号

分类
边界符: ^ 和 $
  // 用法:let 正则变量=/^规则内容$/;// 注意:边界符在正则中可以使用一个也可以使用两个,两个都可以同时使用// ^符号:表示开始// 代码演示:let ref = /a/let str = 'abc'console.log(ref.test(str))let ref2 = /^a/let str2 = 'babc'console.log(ref2.test(str2)) //要求str必须以a开始// $符号:表示结束let ref3 = /a$/let str3 = 'abca'console.log(ref3.test(str3))let ref4 = /abc$/let str4 = 'abcaabc'console.log(ref4.test(str4))//  ^和$同时使用let ref5 = /^a$/   //如果同时使用表示精确匹配,ref5表示当前智能有一个字母alet str5 = 'abc'console.log(ref5.test(str5))

在这里插入图片描述

量词符
// 量词符
//  +  :表示出现的次数一次或更多次(最少一次)
//  ? :出现的次数0次或者1次(最多一次)
//  * :出现的次数为零次或更多次
//  {n}:表示出现的次数正好等于n次
//  {n,} :表示出现的次数大于等于n次
//  {n,m} :表示出现的次数大于等于n次且小于等于m次
// 备注 n和m表示两个数字
<script>// 量词符//  +let reg = /^a+$/let str = 'aa'console.log(reg.test(str))//  ?let reg2 = /^a?$/let str2 = ''console.log('--------------------')console.log(reg2.test(str))console.log(reg2.test(str2))//  *//  {n}let reg3 = /^a{3}$/let str3 = 'aaa'console.log('--------------------')console.log(reg3.test(str))console.log(reg3.test(str3))let reg4 = /^ab{3}$/console.log(reg4.test('ababab'))console.log(reg4.test('abbb'))//  {n,}let reg5 = /^a{3,}$/let str5 = 'aaabb'let str7 = 'aaaa'console.log('--------------------')console.log(reg5.test(str5))console.log(reg5.test(str7))//  {n,m}// 备注 n和m表示两个数字let reg6 = /^a{3,5}$/let str6 = 'aaabaab'let str8 = 'aaaaa'console.log('--------------------')console.log(reg6.test(str6))console.log(reg6.test(str8))</script>

在这里插入图片描述

字符类
<script>//    字符类// a) []:内容中只要包含其中一个值即可// b)[值-值]表示的含义:内容中要包含从某值1到值2的内容// c) [^值]表示的含义:对集合内的内容取反// d)  . :匹配除换行符之外的任何单个字符  /./ ,在字符串中,如果表示换行通过换行符实现, \r\nlet reg = /[ab]/ //没写精确匹配let str = 'asdsb'console.log('----------------')console.log(reg.test(str))let reg2 = /[a-e]/ //表示的含义:内容中要包含从某a-e的内容let str2 = 'adb'let str3 = 'adbt'console.log('----------------')console.log(reg2.test(str2))console.log(reg2.test(str3))let reg4 = /[^ab]/let str4 = '123'console.log('----------------')console.log(reg4.test(str4))console.log(reg4.test('ab'))</script>

在这里插入图片描述

预定义类(属于字符类)
预定义类:就是字符类[ ]另一种简写形式
a)   \d:用来匹配0-9之间的任意一个数字[0123456789] [0-9] \d 
b)  \D:(不能有数字)
c)   \w:用来匹配任意的数字,字母,下划线  [ 0-9a-zA-Z_]
d)  \W:跟\w取反
e)   \s:用来匹配空格,换行,制表符符号(\t相当于用户按下了一次tab键)
f    \S:跟\s取反
修饰符
i:忽略大小写
g:表示全局匹配
// i表示忽略大小写let reg = /a/let str = 'A' console.log(reg.test(str))  //falselet reg2 = /a/i; console.log(reg2.test(str))  //true// g表示全局匹配let reg3 = /t/let str3 = 'sdasdsatdttt'let reg4 = /t/glet str4 = 'sdasdsatdttt'// 匹配第一个tconsole.log(reg3.exec(str3))console.log(reg3.exec(str3))console.log(reg3.exec(str3))console.log('---------------------------')//匹配全部的tconsole.log(reg4.exec(str4))console.log(reg4.exec(str4))console.log(reg4.exec(str4))

在这里插入图片描述

字符串替换
语法:字符串.replace(正则,‘替换后的内容’)
    <script>let str = 'a123sas23a'// 要求:将字符串中所有的a替换为Aconsole.log(str.replace(/a/g, 'A'))</script>

在这里插入图片描述

敏感词替换

将用户输入的内容替换
定义一个规则将那些内容替换掉
let reg = /激情|呵呵/g 替换激情或呵呵 |表示或的意思

 <textarea name="" id="" cols="30" rows="10"></textarea><input type="button" value="按钮"><br><strong style="color: red;">展示内容</strong><span></span><script>let reg = /激情/glet btn = document.querySelector('input')let txt = document.querySelector('textarea')let span = document.querySelector('span')btn.addEventListener('click', function () {let content = txt.value.replace(reg, '**')span.innerHTML = content})</script>

在这里插入图片描述

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

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

相关文章

基于Springboot的驾校预约学习系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的驾校预约学习系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

fate隐私求交案例

intersect组件是解决纵向联邦学习中的隐私求交问题 fate隐私求交的方式有三种&#xff1a;raw,rsa,dh。raw方式不安全&#xff0c;rsa和dh方式是安全的&#xff0c;dh是基于对称加密的安全交集 rsa是基于RSA(非对称加密)的安全交集&#xff0c;&#xff0c;dh方法也用于安全的…

供应链金融新篇章:2001-2022年上市公司金融水平测算概览

数据说明&#xff1a;参考周兰和吴慧君&#xff08;2022&#xff09;的方法测算出2001-2022年上市公司供应链金融水平&#xff0c;供大家研究使用。数据来源&#xff1a;企业年报等。时间跨度&#xff1a;2001-2022年 数据范围&#xff1a;A股上市公司 数据指标&#xff1a;…

实现swiper 3d 轮播效果

先上个效果图&#xff0c;代码可以直接拿~ 安装swiper和vue-awesome-swiper 因为项目用的是nuxt2&#xff0c;所以考虑到swiper的兼容问题&#xff0c;选择的是"swiper": “^5.2.0” 首先是安装swiper和vue-awesome-swiper&#xff0c;并指定版本 npm install s…

基于Unity3D的AVG卡牌游戏设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 相关技术 3 1.1 C# 3 1.2 Unity3D 3 1.3 UGUI 3 1.4 XML 4 1.5 原型设计模式 4 1.6 本章小结 4 2 系统分析 5 2.1 用户需求 5 2.2 功能需求 5 2.3 非功能需求 6 2.4 本章小结 6 3 系统设计 7 3.1 系统该要设计 7 3.2 系统详细设计 7 3.2.…

数组和指针笔试题目解析---掌握他们拿下指针魔鬼

目录 一、前言二、一维数组2.1代码2.2分析2.3验证运行结果 三、字符数组3.1代码13.1.1分析3.1.2验证运行结果 3.2代码23.2.1分析3.2.2验证运行结果 3.3代码33.3.1分析3.3.2验证运行结果 3.4代码43.4.1分析3.4.2验证运行结果 3.5代码53.5.1分析3.5.2验证运行结果 3.6代码63.6.1分…

基于SpringBoot和VUE技术的智慧生活商城系统设计与实现

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一、研究背景…

Net Core 使用Mongodb操作文件(上传,下载)

Net Core 使用Mongodb操作文件&#xff08;上传&#xff0c;下载&#xff09; 1.Mongodb GridFS 文件操作帮助类。 GridFS 介绍 https://baike.baidu.com/item/GridFS/6342715?fraladdin DLL源码&#xff1a;https://gitee.com/chenjianhua1985/mongodb-client-encapsulati…

STM32点亮LED灯与蜂鸣器发声

STM32之GPIO GPIO在输出模式时可以控制端口输出高低电平&#xff0c;用以驱动Led蜂鸣器等外设&#xff0c;以及模拟通信协议输出时序等。 输入模式时可以读取端口的高低电平或电压&#xff0c;用于读取按键输入&#xff0c;外接模块电平信号输入&#xff0c;ADC电压采集灯 GP…

论坛管理系统|基于Spring Boot+ Mysql+Java+B/S架构的论坛管理系统设计与实现(可运行源码+数据库+设计文档+部署说明+视频演示)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 目录 前台功能效果图 管理员功能登录前台功能效果图 用户功能模块 系统功能设计 数据库E-R图设计 l…

OxyPlot图表曲线图学习笔记(winform)

一、学习OxyPlot 开源地址&#xff1a;https://github.com/oxyplot/oxyplot 最新版&#xff1a;v2.1.2 新建winform&#xff0c;nuget中添加依赖包 二、写代码 2.1 BarSeries 2.2 ScatterSeries 2.3 LineSeries (带指向箭头&#xff09; int pointCount 50; double[] xs …

Xilinx 7系列FPGA的配置流程

目录 1.4配置流程 1.4.1 设备上电 ​编辑1.4.2 清除配置寄存器 1.4.3 采样模式引脚 1.4.4 同步 ​编辑1.4.5 检测设备ID ​编辑1.4.6 加载配置数据 1.4.7 CRC校验 1.4.8 启动序列 1.4配置流程 对于所有配置模式&#xff0c;7系列的基本配置流程都是相同的&…

C语言sizeof操作符与strlen函数

1.sizeof与strlen的介绍 (1).sizeof 计算变量的内存空间大小。底层实际上是对变量类型的计算。是一个单目操作符&#xff0c;不是函数&#xff0c;后面的括号可以省略 (2).strlen 函数原型 strlen是一个函数&#xff0c;返回的size_t类型的数据,头文件为string.h计算字符串…

Python爬虫:requests模块的基本使用

学习目标&#xff1a; 了解 requests模块的介绍掌握 requests的基本使用掌握 response常见的属性掌握 requests.text和content的区别掌握 解决网页的解码问题掌握 requests模块发送带headers的请求掌握 requests模块发送带参数的get请求 1 为什么要重点学习requests模块&…

如何在安卓端的SAP里配置打印机

1、转到 SPAD 事务&#xff08;“假脱机管理”屏幕&#xff09;。单击“设备/服务器”选项卡&#xff0c;输入输出设备的名称&#xff0c;然后点击显示按钮。 2、如果打印机已配置&#xff0c;它将显示设备属性、输出设备属性和纸盒信息的所有详细信息。如果输入新的打印机名称…

AndroidStudio设计登录页源码(音悦app)

目录 一、代码 二、效果 一、代码 1.在activity_main.xml里的代码 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent&quo…

import gdal 报错

1.下载gdal https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal 2.安装正确版本 &#xff08;1&#xff09;查看python版本 python -v我的版本Python 3.7.9 建议下载 GDAL-3.4.2-cp37-cp37m-win_amd64.whl &#xff08;2&#xff09;放到Scripts文件夹下 执行 pip install GD…

mysql启动报错:ERROR! The server quit without updating PID file

mysql 重启或者启动时报错&#xff1a;ERROR! The server quit without updating PID file (/home/data/mysql/e787y33206.novalocal.pid).如下图: 重启报错&#xff1a; 启动也报错 这个错误是因为有mysql启动没有完全结束&#xff0c;如果是重启mysql服务&#xff0c;则在…

L2-035 完全二叉树的层序遍历(Python)

L2-035 完全二叉树的层序遍历 分数 25 全屏浏览 切换布局 作者 陈越 单位 浙江大学 一个二叉树&#xff0c;如果每一个层的结点数都达到最大值&#xff0c;则这个二叉树就是完美二叉树。对于深度为 D 的&#xff0c;有 N 个结点的二叉树&#xff0c;若其结点对应于相同深度…

超详细——VsCode连接远程主机/虚拟机并设置免密登录

超详细——VsCode连接远程主机/虚拟机并设置免密登录 文章目录 超详细——VsCode连接远程主机/虚拟机并设置免密登录[toc]连接到远程主机/虚拟机步骤1、打开vscode拓展 搜索 remote-ssh并安装步骤2、打开远程主机/虚拟机的ssh服务步骤3、设置连接远程主机的配置文件 设置免密登…