JavaScript-4.正则表达式、BOM

正则表达式

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

开始与结束

^

字符串的开始

$

字符串的结束

例:

  • "^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.mzph.cn/bicheng/3098.shtml

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

相关文章

数据结构(八)——排序

八、排序 8.1 排序的基本概念 排序(Sort)&#xff0c;就是重新排列表中的元素&#xff0c;使表少的元素满足按关键字有序的过程。 输入∶n个记录R1,R2...., Rn&#xff0c;对应的关键字为k1, k2,... , kn 输出:输入序列的一个重排R1,R2....,Rn&#xff0c;使得有k1≤k2≤...≤…

综合大实验

题目&#xff1a; 1、R4为ISP&#xff0c;其上只配置IP地址&#xff1b;R4与其他所直连设备间均使用公有IP&#xff1b; 2、R3-R5、R6、R7为MGRE环境&#xff0c;R3为中心站点&#xff1b; 3、整个OSPF环境IP基于172.16.0.0/16划分&#xff1b;除了R12有两个环回&#xff0c;其…

VUE父组件向子组件传递值

创作灵感 最近在写一个项目时&#xff0c;遇到了这样的一个需求。我封装了一个组件&#xff0c;这个组件需要被以下两个地方使用&#xff0c;一个是搜索用户时用到&#xff0c;一个是修改用户信息时需要用到。其中&#xff0c;在搜索用户时&#xff0c;可以根据姓名或者账号进…

[前端]NVM管理器安装、nodejs、npm、yarn配置

NVM管理器安装、nodejs、npm、yarn配置 NVM管理器安装 nvm(Node.js version manager) 是一个命令行应用&#xff0c;可以协助您快速地 更新、安装、使用、卸载 本机的全局 node.js 版本。 nvm下载地址&#xff1a;https://github.com/coreybutler/nvm-windows/releases 1.全部…

Unity面向切面编程

一直说面向AOP&#xff08;切面&#xff09;编程&#xff0c;好久直接专门扒出理论、代码学习过。最近因为某些原因&#x1f62d;还得再学学造火箭的技术。 废话不多说&#xff0c;啥是AOP呢&#xff1f;这里我就不班门弄斧了&#xff0c;网上资料一大堆&#xff0c;解释的肯定…

mybatis中<if>条件判断带数字的字符串失效问题

文章目录 一、项目背景二、真实错误原因说明三、解决方案3.1针对纯数字的字符串值场景3.2针对单个字符的字符串值场景 四、参考文献 一、项目背景 MySQL数据库使用Mybatis查询拼接select语句中进行<if>条件拼接的时候&#xff0c;发现带数字的或者带单个字母的字符串失效…

CPU资源控制

一、CPU资源控制定义 cgroups&#xff08;control groups&#xff09;是一个非常强大的linux内核工具&#xff0c;他不仅可以限制被namespace隔离起来的资源&#xff0c; 还可以为资源设置权重、计算使用量、操控进程启停等等。 所以cgroups&#xff08;control groups&#xf…

Netty学习——实战篇5 Netty 心跳监测/WebSocket长连接编程 备份

1 心跳监测 MyServer.java public class MyServer {public static void main(String[] args) {NioEventLoopGroup bossGroup new NioEventLoopGroup(1);NioEventLoopGroup workerGroup new NioEventLoopGroup();try {ServerBootstrap serverBootstrap new ServerBootstrap…

学习Docker笔记

在23号刚刚学完新版本的docker还想说回去继续学习老版本的springcloud课程里面的docker 结果一看黑马首页新版本课程出了&#xff0c;绷不住了。以下是我学习新版本docker的笔记&#xff0c;记录了我学习过程遇到的各种bug和解决&#xff0c;也参考了黑马老师的笔记&#xff1a…

TDengine高可用探讨

提到数据库&#xff0c;不可避免的要考虑高可用HA&#xff08;High Availability&#xff09;。但是很多人对高可用的理解并不是很透彻。 要搞清高可用需要回答以下几个问题&#xff1a; 什么是高可用&#xff1f;为什么需要高可用&#xff1f;高可用需要达到什么样的目标&am…

Unity射线实现碰撞检测(不需要rigbody组件)

使用physic.CapsulCast&#xff08;&#xff09;&#xff1b; 前面3个参数生成一个胶囊体&#xff0c; 向着发射方向&#xff0c;发射出一串的胶囊&#xff08;没有最大距离&#xff09; 有最大距离&#xff0c;可以节约性能开销。 physic.CapsulCast&#xff08;&#xff0…

easypoi 导出增加自增序列

要求&#xff1a;使用easypoi导出Excel的时候&#xff0c;要求增加”序号“列&#xff0c;从1开始增加。这列与业务数据无关&#xff0c;只是展示用&#xff0c;便于定位。如下图所示 实现方式&#xff1a;Java对象新增一列&#xff0c;注意name "序号", format &…

Linux-缓冲区(简单理解)

1. 缓冲区是什么 缓冲区就是一段内存空间。 2. 为什么要有缓冲区 IO写入有两种&#xff1a; 写透模式&#xff08;WT&#xff09; 成本高&#xff0c;效率低写回模式&#xff08;WB&#xff09; 成本低&#xff0c;效率高 写透模式&#xff1a;每次的文件写入都要立即刷新…

使用ClickHouse和Terraform进行CI/CD

本文字数&#xff1a;11047&#xff1b;估计阅读时间&#xff1a;28 分钟 审校&#xff1a;庄晓东&#xff08;魏庄&#xff09; 本文在公众号【ClickHouseInc】首发 简介 在 ClickHouse&#xff0c;我们致力于以 API 为先的开发方式来构建 ClickHouse Cloud。用户通过用户界面…

如何快速学习盲打键盘的指法

学习盲打键盘的指法需要一定的时间和练习&#xff0c;但是以下几个方法可以帮助你加快学习的速度&#xff1a; 掌握正确的手位&#xff1a;了解标准的键盘布局以及手指应该放置的位置是学习盲打的第一步。在QWERTY键盘上&#xff0c;你的左手应该放在ASDF键上&#xff0c;右手应…

人工智能入门(一):基于Pytorch的手写数字识别模型

前言&#xff1a; 因为还在上学&#xff0c;时间不太够用&#xff0c;很多内容写到后面心有余力不足&#xff0c;未来有时间我会慢慢补充。人工智能的知识涉猎范围广又杂乱无章&#xff0c;啃书或上课学到的知识往往很早就过时了或者离实际的项目无关。所以&#xff0c;我很希…

VS调试、debug和release、栈区底层简单介绍、const 修饰指针变量介绍

文章目录 前言一、调试二、debug和release三、调试需要多用&#xff0c;多熟悉四、栈区底层简单介绍五、优秀的代码&#xff1a;常见的coding技巧: 六、const 修饰指针变量1. const 出现在 * 左边2. const 出现在 * 右边 七、strcpy函数的仿写1.版本12. 版本23. 版本34. 版本4 …

Andorid进程间通信之 UNIX SOCKET

1&#xff0c;什么是UNIX SOCKET UNIX SOCKET&#xff0c;域套接字&#xff0c;UNIX SOCKET可用于同一台设备进程间通信&#xff0c;它不需要经过网络协议栈&#xff0c;不需要打包拆包、计算校验和、维护序列号应答等&#xff0c;只需要将数据从一个进程复制到另一个进程&…

高精度加法及乘法

目录 字符串的高精度加法 为什么需要高精度加法&#xff1f; 怎么进行高精度加法&#xff1f; 链表的高精度加法 翻转链表&#xff08;带虚拟头节点&#xff09; 字符串的高精度乘法 字符串的高精度加法 大数加法_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.co…

linux下查看前10最耗内存的进程

lunux查找占用内存前10的进程 1、使用Top命令查询进程 输入 top 命令&#xff0c;然后按下大写M按照内存MEM排序&#xff0c;按下大写P按照CPU排序。 2、查询占用CPU最高的前10个进程 ps aux|head -1;ps aux|grep -v PID|sort -rn -k 3|head 3、查询占用内存最大的前10个进程…