JavaScript-4.正则表达式、BOM

ops/2024/9/23 20:17:49/

正则表达式

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

开始与结束

^

字符串的开始

$

字符串的结束

例:

  • "^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.ppmy.cn/ops/6016.html

相关文章

AI网关助力边缘物联网

随着人工智能技术的迅猛发展&#xff0c;AI网关作为通往智能未来的桥梁&#xff0c;正逐渐被人们所认识和重视。AI网关是一种智能设备&#xff0c;它连接了各种智能终端设备&#xff0c;促进它们之间的交流和协同工作。在这个信息化、智能化时代&#xff0c;AI网关的作用愈发凸…

Java基于微信小程序的讲座预约系统的研究与实现,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

openjudge_2.5基本算法之搜索_1804:小游戏

题目 1804:小游戏 总时间限制: 1000ms 内存限制: 65536kB 描述 一天早上&#xff0c;你起床的时候想&#xff1a;“我编程序这么牛&#xff0c;为什么不能靠这个赚点小钱呢&#xff1f;”因此你决定编写一个小游戏。 游戏在一个分割成w * h个正方格子的矩形板上进行。如图所示…

分布式光纤测温解决方案

安科瑞电气股份有限公司 祁洁 15000363176 一、方案介绍 分布式光纤测温&#xff08;DTS&#xff09;集光电信号检测、计算机技术等为一体&#xff0c;具有实时监测、测温精度高、测量距离长、可精确定位、采用光纤作为传感器和传输介质&#xff0c;具有抗电磁干扰、本征防…

C/C++中设置随机数

前言 我们通常在写一个数据结构后&#xff0c;需要去测试其正确性和性能比较&#xff0c;那在平常手动输入数据的方式太鸡肋&#xff0c;并且不具有普遍性和随机性。基于这个原因&#xff0c;我们必须要掌握设置随机数&#xff0c;不但可以给我们提供更多的数据&#xff0c;还可…

HttpServletResponse HttpServletRequest

HttpServletResponse 和 HttpServletRequest 是 Java Servlet API 中的两个核心接口&#xff0c;它们分别代表了 HTTP 响应和 HTTP 请求。在基于 Java 的 Web 应用中&#xff0c;特别是使用 Servlet 技术时&#xff0c;这两个接口被广泛应用。 HttpServletRequest HttpServle…

6G技术,信道建模

目录 6G技术: 6G信道建模: 6G信号处理: 6G天线技术: 6G频谱共享:

【R语言】混合图:小提琴图+箱线图

{ggstatsplot} 是 {ggplot2} 包的扩展&#xff0c;用于创建图形&#xff0c;其中包含信息丰富的绘图本身中包含的统计测试的详细信息。在典型的探索性数据分析工作流程中&#xff0c;数据可视化和统计建模是两个不同的阶段&#xff1a;可视化通知建模&#xff0c;而建模又可以建…