JavaScript-4.正则表达式、BOM

news/2024/5/19 4:02:51

正则表达式

正则表达式包含在"/","/"中

开始与结束

^

字符串的开始

$

字符串的结束

例:

  • "^The":表示所有以"The"开始的字符串("There"、"The cat"等)
  • "of despair$":表示所有以"of despair"结尾的字符串
  • "^abc$":表示开始和结尾都是"abc"的字符串
  • "notice":表示任何包含"notice"的字符串

量词(次数)

+

一次/更多

*

没有/更多

?

没有/一次

{}

重复次数的范围

例:

  • "ab*":表示一个字符串有一个a后面跟着零个或若干个b("a"、"ab"、"abbb"……)
  • "ab+":表示一个字符串有一个a后面跟着至少一个b或者更多
  • "ab?":表示一个字符串有一个a后面跟着零个或者一个b
  • "a?b+$":表示在字符串的末尾有零个或一个a跟着一个或几个b
  • "ab{2}":表示一个字符串有一个a跟着2个b("abb")
  • "ab{2,}":表示一个字符串有一个a跟着至少2个b
  • "ab{3,5}":表示一个字符串有一个a跟着3到5个b

查找匹配

x|y

匹配x或y

(x)

匹配括号中的内容

.

匹配任意字符

[xyz]

匹配中括号中的任意一个

[^xyz]

中括号中的一个都不匹配

[a-d]

表示一个字符串包含小写a到d中的一个

[a-zA-Z]

包含大小写的任意一个字母

[0-9]

数字

转义字符

\d

数字

\D

非数字

\n

换行符

\r

回车符

\s

空白字符,包括\n,\r,\f,\t,\v等

\S

非空白字符

\t

制表符

\v

重直制表符

\w

匹配字母,数字或下划线字符

练习

校验登录名:只能输入5-20个以字母开头、可带数字、"_"、"."的字符串

密码:6-20个字母、数字、下划线

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>校验登录</title><script>function check(){var username = document.getElementById('username').valuevar userpass = document.getElementById('userpass').value// 登录名5-20个以字母开头、可带数字、"_"、"."的字符串var name_regex = /^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/// 密码6-20个字母、数字、下划线var pass_regex = /^(\w){6,20}$/if(username == null || username == '') {document.getElementById('pass').innerHTML = ''document.getElementById('name').innerHTML = '用户名不能为空'return false}else if(username.match(name_regex) == null){document.getElementById('pass').innerHTML = ''document.getElementById('name').innerHTML = '登录名5-20个以字母开头、可带数字、"_"、"."的字符串'return false}else if(userpass == null || userpass == ''){document.getElementById('name').innerHTML = ''document.getElementById('pass').innerHTML = '密码不能为空'return false}else if(userpass.match(pass_regex) == null){document.getElementById('name').innerHTML = ''document.getElementById('pass').innerHTML = '密码6-20个字母、数字、下划线'return false}else{alert('登录成功')return true} }</script>
</head>
<body><form action="" method="get" onsubmit="return check()">username:<input type="text" id="username"><font id="name"></font><br>userpass:<input type="text" id="userpass"><font id="pass"></font><br><input type="submit"></form>
</body>
</html>

浏览器对象模型(BOM)

window.open():打开新窗口

window.close():关闭当前窗口

window.print():打印

history.back():与在浏览器点击后退按钮相同

history.forward():与在浏览器点击向前按钮相同

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>BOM</title>
</head>
<body><button id="btn1" onclick="alert(window.confirm('你确定要执行此操作吗?'))">确认框</button><button id="btn2" onclick="window.close()">关闭窗口</button><button id="btn3" onclick="window.open()">打开窗口</button><button id="btn4" onclick="window.print()">打印窗口</button><button id="btn5" onclick="history.back()">返回上一页</button>
</body>
</html>

计时

setInterval():间隔指定的毫秒数不停地执行指定的代码

setTimeout():暂停指定的毫秒数后执行指定代码

clearInterval():用于停止setInterval()方法执行的函数代码

clearTimeout():用于停止执行setTimeout()

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>计时</title><script>window.onload=function(){document.getElementById('btn1').onclick=function(){// 注意:没有加vardisplay_time = setInterval(function(){start_time()}, 1000)}document.getElementById('btn2').onclick=function(){clearInterval(display_time)}}function start_time(){var d = new Date()var t = d.toLocaleTimeString()document.getElementById('time').innerHTML = t}</script>
</head>
<body><p id="time"></p><button id="btn1">显示时间</button><button id="btn2">暂停时间</button>
</body>
</html>

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>计时2</title><script>function myFunction(){tmp = setTimeout(function(){alert('hello!')}, 3000)}function stopmyFunction(){clearTimeout(tmp)}</script>
</head>
<body><p>要在3秒前阻止弹窗出现</p><button id="btn1" onclick="myFunction()">三秒后出现弹窗</button><button id="btn2" onclick="stopmyFunction()">阻止弹窗出现</button>
</body>
</html>


http://www.mrgr.cn/p/30383475

相关文章

最新青龙部署美团自动领红包、抢券

一、服务器部署: 1、安装docker这里选择Ubuntu 系统进行操作:apt-get install docker docker.io -yps:centos自行查找安装docker​ 安装完测试docker命令: docker ps // 打印正在运行的容器 docker -v // 打印docker版本信息2、docker安装青龙青龙的仓库地址:https://gith…

YOLOv5 GUI界面部署教程

(1)将yolov5-6.0-APP文件夹解压,解压后其中文件夹如下。(2)在pycharm中打开yolov5-6.0-APP文件夹,如下图所示。(3)打开终端,运行命令pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple,安装第一批依赖(4)输入命令cd PyQt5-YOLOv5-yolo…

Linux下的UDEV机制/守护进程

一. Udev机制概念引入 ( 需要在 etc/udev/rules.d/ 下创建设备的相关规则&#xff0c;不然有可能udev机制生成的设备文件不具备可读可写的权限&#xff0c;adb无法成功通过该设备文件访问设备 ) a. 创建文件夹 sudo vim Xiaomi-audroid.rules b. 添加规则 …

【汇编语言】流程转移和子程序

【汇编语言】流程转移和子程序 文章目录 【汇编语言】流程转移和子程序前言一、“转移”综述二、操作符offset三、jmp指令jmp指令——无条件转移jmp指令&#xff1a;依据位移进行转移两种段内转移远转移&#xff1a;jmp far ptr 标号转移地址在寄存器中的jmp指令转移地址在内存…

球体与棱柱的切接问题

球体与棱柱的切接问题前言 球体与正三棱柱正三棱柱不一定有内切球和棱切球,但一定有外接球。正三棱柱的外接球的球心是上下底面中心连线的中点,关键关系:正三棱柱的高为 \(h\),正三棱柱的底面外接圆的半径 \(r\) 与球的半径 \(R\) 之间的关系为 \((\cfrac{h}{2})^2+r^2=R^2…

帆软笔记

一:表格值自定义显示 1、日期型格式化:=FORMAT($$$,"MM月dd日"),或者 2、普通值自定义显示:if($$$=SW_1,丝网一号机,if($$$=SW_2,丝网二号机,丝网三号机)),或者 二:从数据集中再次筛选,如Sum运算SUM(表格.select(QTY_SW, SHIFT_CODE_NAME = B3 && WO…

户外旅行摄影手册,旅游摄影完全攻略

一、资料前言 本套旅游摄影资料&#xff0c;大小295.47M&#xff0c;共有9个文件。 二、资料目录 《川藏线旅游摄影》杨桦.彩印版.pdf 《户外摄影指南》(Essential.Guide.to.Outdoor.photography.amateur)影印版.pdf 《旅行摄影大师班》(英)科尼什.扫描版.PDF 《旅行摄影…

linu管理文本文件

vi\vim编辑器的三种工作模式 命令模式(Command mode):按键编辑器都理解为命令,以命令驱动执行不同的功能。此模型下,不能自由进行文本编辑。 输入模式(Insert mode):也就是所谓的编辑模式、插入模式。此模式下,可以对文件内容进行自由编辑。 底线命令模式(Last line …

第十五届蓝桥杯省赛第二场C/C++B组F题【狡兔k窟】题解(AC)

题意分析 有一个 n n n 个点&#xff0c; n − 1 n-1 n−1 条边的无向图&#xff0c;边权均为 1 1 1。 每个点隶属于一个集合&#xff0c;同一个集合的点可以互相传送。 给定 m m m 个询问&#xff0c;求 x , y x, y x,y 的最短距离。 最短路解法 步骤&#xff1a; 建…

【PyTorch】torch.gather() 用法

gather常被用于image做mask的操作中&#xff0c;对哪些地方进行赋值0/1 API&#xff1a; torch.gather — PyTorch 2.2 documentation torch.gather(input, dim, index, outNone) → Tensor gather()的意义&#xff1a; 顾名思义&#xff0c;聚集、集合&#xff1a;gather…

1500PLC通过Modbus转Profinet网关与流量计Modbus通讯

Modbus转Profinet网关(XD-MDPN100)是一种能够实现Modbus协议和Profinet协议之间转换的设备。通过使用Modbus转Profinet网关,可以实现流量计与1500PLC之间的高效通讯,使得设备之间的数据交换更加便捷和高效。1500PLC作为控制器,与Modbus转Profinet网关的结合,为工业控制系…

实验三

TASK 1点击查看代码 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> #define N 80void print_text(int line, int col, char text[]); // 函数声明 void print_spaces(int n); // 函数声明 void print_blank_lin…

Https协议原理剖析【计算机网络】【三种加密方法 | CA证书 】

目录 一&#xff0c;fidler工具 前提知识 二&#xff0c;Https原理解析 1. 中间人攻击 2. 常见的加密方式 1&#xff09;. 对称加密 2&#xff09;. 非对称加密 对称加密 4&#xff09;. CA证书 1. 数据摘要 3. 数字签名 CA证书 理解数据签名 存在的安全疑问&am…

JUC工具(Exchange)

Exchanger(交换器),顾名思义,用于两个线程之间进行数据交换Exchanger(交换器),顾名思义,用于两个线程之间进行数据交换 两个线程通过 exchange() 方法交换数据,如果第一个线程先执行 exchange()方法,它会一直等待第二个线程也执行 exchange 方法,当两个线程都到达同…

面试算法题之暴力求解

这里写目录标题 1 回溯1.1 思路及模板1.1 plus 排列组合子集问题1.2 例题1.2.1 全排列1.2.2 N 皇后1.2.3 N皇后问题 II1.2.4 子集 &#xff08;子集/排列问题&#xff09;1.2.4 组合(组合/子集问题)1.2.5 全排列 &#xff08;排列问题&#xff09;1.2.1做过1.2.6 子集II &#…

【机器学习】集成学习---投票法(Voting)

一、引言 集成学习&#xff08;Ensemble Learning&#xff09;是机器学习领域中的一种重要策略&#xff0c;它通过结合多个模型的预测结果来提高整体性能。在单个模型容易过拟合或欠拟合的情况下&#xff0c;集成学习能够通过综合多个模型的优点来减少这种风险&#xff0c;从而…

记内网http洪水攻击,导致网页无法访问一事

事由 最近两日&#xff0c;部分同事在访问税纪云平台时&#xff0c;登录跳转页面频繁转圈、要么就是出现无法连接的错误提示。 无法访问此页面 已重置连接。 请尝试: 检查连接检查代理和防火墙运行 Windows 网络诊断经过以下几方面的排查&#xff0c;无果。 后续通过检查…

[题解]CF61E Enemy is weak

CF61E Enemy is weak 如下图,第\(i\)行\(j\)列表示第\(j\)个数结尾,向前长度为\(i\)的逆序子序列个数。递推方式见下图。第一行全为\(1\)。 要填第\(2\)行的值,就往前找所有\(>\)当前元素的位置,把它们第\(1\)行的值加起来。 要填第\(3\)行的值,就往前找所有\(>\)当…

SSTV音频转图片

SSTV工具有很多&#xff0c;这里使用RX-SSTV慢扫描工具 下载安装 RX-SSTV解码软件 下载地址&#xff1a;https://www.qsl.net/on6mu/rxsstv.htm 一直点下一步&#xff0c;安装成功如下图: 虚拟声卡e2eSoft 由于SSTV工具是根据音频传递图片信息&#xff0c;正常解法需要一…

Visual Studio 项目发布时将资源目录文件夹所有文件拷贝到发布路径

1.背景 在 .NET 项目开发过程中,时常需要将资源文件夹复制到生成目录,以确保这些资源随项目输出。 2.方法找到当前项目例如:xxxxx.Api 双击 进入,对 .csproj文件内容 ,加入如下信息:<Target Name="CopyResourcesPublish" AfterTargets="Publish"…