JavaScript高级Ⅲ

接上文 JavaScript高级Ⅱ JavaScript高级Ⅱ(全面版)-CSDN博客

第3章 正则表达式

3.1 正则表达式

RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。

3.1.1 创建的方式

方式1: 正则表达式是JS中是一个类:RegExp = Regular Expression 正则表达式

var reg = new RegExp("正则表达式");

方式2: 以/开头,以/结尾,中间的部分就是正则表达式

var reg = /正则表达式/;
两种方式的区别:

1. 在js中,正则表达式的两种声明方式对于“\d、\D”之类的匹配模式中,前者需要转义,而后者无需转义

2. 前者支持字符串拼接,支持变量,更加灵活;后者对于固定的表达式,书写起来方便快捷、更加直观。

正则表达式

        一. 理解正则表达式语法

                语法:

                1. /pattern/attributes (推荐使用)

                2. new RegExp(pattern, attributes); (不推荐)正则表达式中的特殊符号需要转义                 pattern 正则表达式

                attributes 正则表达式修饰符

                         i 不区分大小写 ,匹配字符串时不区分大小写

                         g 全局匹配 ,匹配到一个之后不停止,匹配字符串的所有内容

                        m 多行匹配 ,遇到换行符不停止,匹配字符串的所有行的内容

                常用正则表达式对象的方法

                 test() 语法 RegExpObject.test(string)

                 如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false。

                 3. 会使用如下正则表达式匹配字符串

验证网址
/http(s)?:[//]{2}([\w-]+\.)+[\w-]+([/]{1}[\w- ./?%&=]*)?/
验证EMail
/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/
校验邮件地址是否合法
/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/
验证身份证号
/\d{17}[\d|X]|\d{15}/
验证邮编
/\d{6}/
校验是否全由8位数字组成
/^[0-9]{8}$/
验证包含中文
[\u4e00-\u9fa5]
中文名称
/^[\u4E00-\u9FA5]{2,4}$/
是否带有小数
/^\d+\.\d+$/
校验电话码格式
/^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/
 

3.2.2 代码演示:
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><title>13-正则表达式</title>
</head>
<body><script >//1. 理解正则表达式语法let r1 = /[\u4e00-\u9fa5]/;//验证包含中文console.log(r1.test("abc"));//falseconsole.log(r1.test("你们好"));//truelet r2 = new RegExp("[\u4e00-\u9fa5]");//验证包含中文console.log(r2.test("abc"));//falseconsole.log(r2.test("你们好"));//true//2. 会使用如下正则表达式匹配字符串let web = /http(s)?:[//]{2}([\w-]+\.)+[\w-]+([/]{1}[\w- ./?%&=]*)?/;console.log(web.test("http://www.baidu.com"));console.log(web.test("abcdefg"));
</script>
</body>
</html>

3.2.3 注意点

3.2.4 案例演示
<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title>14-案例-表单校验</title><style type="text/css">.regist_bg {width: 100%;height: 600px;padding-top: 40px;background-image: url(../img/bg.jpg);}.regist {border: 7px inset #ccc;width: 700px;padding: 40px 0;padding-left: 80px;background-color: #fff;margin-left: 25%;border-radius: 10px;}input[type="submit"] {background-color: aliceblue;width: 100px;height: 35px;color: red;cursor: pointer;border-radius: 5px;}.warn{color:red;font-size: 12px;display: none;}</style>
<!--
表单校验1. 两次密码输入一致2. 邮箱格式正确3. 手机号格式正确4. 提交表单时校验表单项是否合法.
总结:form表单的 onsubmit 事件 表单提交之前触发,用法实例:onsubmit="return 函数()"  函数返回true则表单正常提交,函数返回false则阻止表单提交--></head><body><div class="regist_bg"><div class="regist"><form action="#" onsubmit="javascript:return jundgeSubmit()"><table width="700px" height="350px"><tr><td colspan="3"><font color="#3164af">会员注册</font> USER REGISTER</td></tr><tr><td align="right">用户名</td><td colspan="2"><input id="loginnameId" type="text" name="loginname" size="50" /></td></tr><tr><td align="right">密码</td><td colspan="2"><input id="loginpwdId" type="password" name="loginpwd" size="50" /> </td></tr><tr><td align="right">确认密码</td><td colspan="2"><input id="reloginpwdId" type="password" name="reloginpwd" size="50" /><span id="pwdwarn" class="warn">密码不一致</span> </td></tr><tr><td align="right">Email</td><td colspan="2"><input id="emailId" type="text" name="email" size="50" /> <span id="emailwarn"	class="warn">邮箱格式有误</span> </td></tr><tr><td align="right">姓名</td><td colspan="2"><input name="text" name="username" size="50" /> </td></tr><tr><td align="right">性别</td><td colspan="2"><input type="radio" name="gender" value="男" checked="checked" />男<input type="radio" name="gender" value="女" />女</td></tr><tr><td align="right">电话号码</td><td colspan="2"><input type="text" name="phone" size="50" /> </td></tr><tr><td align="right">所在地</td><td colspan="3">								<select id="provinceId" onchange="selectCity(this.value)" style="width:150px"><option value="">----请-选-择-省----</option><option value="0">北京</option><option value="1">辽宁省</option><option value="2">江苏省</option></select><select id="cityId" style="width:150px"><option>----请-选-择-市----</option></select></td></tr><tr><td width="80" align="right">验证码</td><td width="100"><input type="text" name="verifyCode" /> </td><td><img src="../img/checkMa.png" /> </td></tr><tr><td></td><td colspan="2"><input id="rebtn" type="button" value="注册" /></td></tr></table></form></div></div>
<script >// 1. 两次密码输入一致//获取原密码值let loginpwd = document.querySelector("#loginpwdId");//密码输入框对象//获取确认密码值let reloginpwd = document.querySelector("#reloginpwdId");//密码输入框对象function pwd(){//比较两个值,如果不相等提示警告let pwdwarn = document.querySelector("#pwdwarn");//密码警告if (loginpwd.value == reloginpwd.value) {pwdwarn.style.display = "none";//不显示警告return true;//校验通过}else{pwdwarn.style.display = "inline";//不显示警告return false}}reloginpwd.onchange = pwd ;//确认密码值改变时进行校验// 2. 邮箱格式正确//获取邮箱输入框元素let email = document.querySelector("#emailId");//获取邮箱输入框元素let emailwarn = document.querySelector("#emailwarn");//邮箱警告元素//判断邮箱格式是否正确,格式有误提示警告function judgeEmail(){let emailRegexp = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;let boo = emailRegexp.test(email.value);//判断邮箱格式if (boo) {emailwarn.style.display = "none";//不显示警告return true;//校验通过}else{emailwarn.style.display = "inline";//不显示警告return false}}email.onchange = judgeEmail;//邮箱地址值改变时进行校验// 3. 手机号格式正确let phoneRegexp = /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/;//4. 提交表单时校验表单项是否合法.function jundgeSubmit(){console.log("执行表单校验");let boo = pwd() && judgeEmail() ;//所有校验	全部合法才提交表单console.log(boo);return boo;//为true允许提交表单, 为false阻止表单提交}
</script></body>
</html>

运行效果:

第4章 补充内容

4.1 querySelector详解

4.1.1 定义和用法

querySelector() 方法返回文档中匹配指定 CSS 选择器的一个元素。

注意: querySelector() 方法仅仅返回匹配指定选择器的第一个元素。如果你需要返回所有的元素,请使用 querySelectorAll() 方法替代。

4.1.2 语法

语法格式

document.querySelector(CSS selectors)

参数值

4.1.3 案例演示

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF‐8" /><title>新的选择器</title><style>a[target] {background-color: yellow;}</style></head><body><div id="demo">id="demo" 的 p 元素</div><div>点击按钮修改 id="demo" 的 p 元素内容</div><button onclick="fun0()">点我</button><script>function fun0() {document.querySelector('#demo').innerHTML = 'Hello World!'}</script><hr /><p>这是一个 p 与元素。</p><p>这也是一个 p 与元素。</p><p>点击按钮修改文档中第一个 p 元素的背景颜色。</p><button onclick="fun1()">点我</button><script>function fun1() {document.querySelector('p').style.backgroundColor = 'red'}</script><hr /><h2 class="example">class="example" 的标题</h2><p class="example">class="example" 的段落。</p><p>点击按钮为第一个 class="example" 的元素添加背景颜色。</p><button onclick="fun2()">点我</button><script>function fun2() {document.querySelector('.example').style.backgroundColor = 'red'}</script><hr /><p>点击按钮为第一个带有 class="example" 的 p 元素添加背景颜色。</p><button onclick="fun3()">点我</button><script>function fun3() {document.querySelector('p.example').style.backgroundColor = 'red'}</script><hr /><p>CSS 选择器 a[target] 确保所有 target 属性的链接背景颜色为黄色:</p><a href="http://www.itcast.cn">aaaaaaa</a><a href="http://www.itheima.com" target="_blank">qqqqqq</a><a href="http://www.czxy.com" target="_top">wwwwww</a><p>点击按钮为第一个带有 target 属性的链接添加红色背景。</p><button onclick="fun4()">点我</button><script>function fun4() {document.querySelector('a[target]').style.border = '10px solid red'}</script></body>
</html>

运行效果:

更多内容敬候 

欢迎大家指点评论~ 点赞+关注⭐⭐⭐

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

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

相关文章

Mysql - is marked as crashed and should be repaired

概述 上周发生了一个Mysql报错的问题&#xff0c;今天有时间整理一下产生的原因和来龙去脉&#xff0c;Mysql的版本是5.5,发生错误的表存储引擎都是MyISAM,产生的报错信息是Table xxxxxx is marked as crashed and should be repaired。 定位问题 产生的后果是Nginx服务没有…

iOS17.4获取UDID安装mobileconfig描述文件失败 提示“安全延迟进行中”问题 | 失窃设备保护

iOS17.4这两天已经正式发布&#xff0c; 在iOS 17.4版本中新增了一个名为"失窃设备保护"的功能&#xff0c;并提供了一个"需要安全延迟"的选项。 iOS17.4获取UDID安装mobileconfig描述文件失败 提示“安全延迟进行中”问题 | 失窃设备保护 当用户选择启用…

【Linux】常用操作命令

目录 基本命令关机和重启帮助命令 用户管理命令添加用户&#xff1a;useradd 命令修改密码&#xff1a;passwd 命令查看登录用户&#xff1a;who 命令查看登录用户详细信息 :w切换用户 目录操作命令cdpwd命令目录查看 ls [-al] 目录操作【增&#xff0c;删&#xff0c;改&#…

基于springboot的医院信息管理系统(程序+代码+文档)

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

STM32---通用定时器(一)理论基础

写在前面&#xff1a;在STM32F103中有众多的定时器&#xff0c;其中包括两个基本定时器&#xff0c;基本定时器的内容已经在上节进行了介绍&#xff0c;基本定时器的功能、结构、使用都较为简单。而STM32F1中还含有4个通用定时器&#xff08;TIM2\3\4\5&#xff09;,这些定时器…

递增三元组 刷题笔记

题意为 若存在 a中的数小于b中的数&#xff0c;b中的数小于c中的数 则该数算一种方案 思路 暴力模拟优化 两层循环遍历即可 从b到c的过程我们发现 第三层并不需要循环 直接加上 大于b的数量即可 那么第一层和第三层是对称的 我们有没有可能再去掉一层循环 只做一次遍历 …

【sgPhotoPlayer】自定义组件:图片预览,支持点击放大、缩小、旋转图片

特性&#xff1a; 支持设置初始索引值支持显示标题、日期、大小、当前图片位置支持无限循环切换轮播支持鼠标滑轮滚动、左右键、上下键、PageUp、PageDown、Home、End操作切换图片支持Esc关闭窗口 sgPhotoPlayer源码 <template><div :class"$options.name"…

基于Springboot的智慧草莓基地管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的智慧草莓基地管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系…

深度学习500问——Chapter02:机器学习基础(5)

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 2.14 贝叶斯分类器 2.14.1 图解极大似然估计 极大似然估计的原理&#xff0c;用一张图片来说明&#xff0c;如下图所示&#xff1a; 例&#xff1a;有两个外形完全相同的箱子&#xff0c;1号箱…

卷积的九大变体算法

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 引言 卷积神经网络&#xff08;CNN&#xff09;的核心在于其多样化的卷积技术&#xff0c;每种技术针对不同的应用和性能需求有着独特的优势。逐…

Linux多线程之线程控制

(&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨&#xff01;你好这里是ky233的主页&#xff1a;这里是ky233的主页&#xff0c;欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 目录 一、pthread_crate 二、pthread_join 三、p…

探索机器学习的无限可能性:从初学者到专家的旅程

探索机器学习的无限可能性&#xff1a;从初学者到专家的旅程 在当今数字时代&#xff0c;机器学习无疑是最引人注目的技术之一。它已经深入到我们生活的方方面面&#xff0c;从个性化推荐到自动驾驶汽车&#xff0c;再到医疗诊断和金融预测。但是&#xff0c;即使我们已经见证…