第十一讲 JavaScript对象编程(七)

系列课程目录

第十一讲 JavaScript对象编程(七)



前言

JavaScript 正则表达式

提示:以下是本篇文章正文内容,下面案例可供参考

一、正则表达式

1.什么是正则表达式

正则表达式(Regular Expression,简称为RegEx),是用来匹配一系列符合某个规则的字符串的表达式
正则表达式独立于编程语言,几乎所有的编程语言甚至文字处理软件都支持正则表达式

基本语法

//正则表达式的格式
/正则表达式主体/修饰符(可选)
修饰符为可选,但一般使用g,代表全局匹配
  • split()
  • replace()
  • search()
  • match()

常用的使用正则表达式的方法,支持传入字符串或正则表达式

在这里插入图片描述

search()

返回要查找的字符第一次出现的位置下标,若未找到返回-1

在这里插入图片描述

match()

返回所有要查找的字符的值,并存入数组

在这里插入图片描述

正则对象

创建正则对象
在这里插入图片描述
正则对象有三个方法compile()、exec()、test()

  • compile()
    用于改变 RegExp

  • exec()
    检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null
    在这里插入图片描述
    在这里插入图片描述

  • test()
    检索字符串中的指定值。返回值是 true 或 false
    在这里插入图片描述
    当使用了修饰符g时,test()和exec()会储存每一次运行的记录,下一次运行会从上一次储存的位置开始
    在这里插入图片描述
    在这里插入图片描述

正则表达式规则

[] 匹配字符组
满足[]内的任意字符即匹配成功
/[js]/g 可匹配j与s

- 区间
/[0123456789]/g 等同于/[0-9]/g
/[0-9a-zA-Z]/g 可匹配所有的数字及大小写字母

\ 转义字符
/-/g 可匹配字符“-”

^ 取反
在字符数组开头使用 ^ 字符实现取反操作
/[^0-9]/g 可匹配所有非数字的字符

  • \w 匹配任意字符,包括[0-9],[a-z],[A-Z]及下划线
  • \d 匹配数字,包括[0-9]
  • \s 匹配空白 包括空格、制表符、换行符等
  • \W 匹配非字符
  • \D 匹配非数字
  • \S 匹配非空白

\b 单词边界
仅匹配有边界的单词
/\bhello/g 匹配 “hellohello hello-hello” 第二个hello无法匹配成功,因为该单词前面紧接其他字符,即没有边界
/\bhello\b/g 匹配 “hellohello hello-hello” 第一个和第二个hello都无法匹配成功

^ $ 开始和结束
/^h/g 匹配以h开头的字符串
/s$/g 匹配以s结尾的字符串

. 任意字符
.代表任意字符、但不能代表\n换行符
/Jav./g 可匹配Java、Javs、Javo、Jave
/J…/g 可匹配J开头的4位字符

? 可选字符
?可以指定某个字符可选,出现0次或1次
/colou?r/g 可匹配color和colour
/Ja.?a/g 可匹配Jaa和Java

{N} 重复
{N}代表某字符或字符组出现N次
/\d{4}/g 代表任意4位数字

{M,N} 重复区间
代表某个字符或字符组出现M到N次
/\d{3,5}/g 可匹配3位、4位、5位数字

? 非贪婪模式
/\d{3,5}/g 默认为贪婪模式,如“123456”会匹配前5个字符
/\d{3,5}?/g 为非贪婪模式,如“123456”会匹配前3个字符

{N,}开闭区间
{N,}代表某字符或字符组出现N次到无限次
/\d{1,}/g 代表任意数字出现1次到无限次
/\d{0,}/g 代表任意数字出现0次到无限次

+ * 简写
+表示{1,} 即/d+/g 等同于 /\d{1,}/g
表示{0,} 即/d/g 等同于 /\d{0,}/g

练习:使用正则表达式验证用户输入的电话号码是否合法
在这里插入图片描述

在这里插入图片描述

二、课堂作业

1.按照要求完成任务

如下(示例):

在这里插入图片描述

2.解析代码

  • 任务11-1
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<body>
		<input type="text" name="" id="xh" placeholder="请输入学号" value="" /></br>
		<input type="text" name="" id="mm" placeholder="请输入密码" value="" /></br>
		<input type="text" name="" id="qq" placeholder="请输入QQ号" value="" /></br>
		<input type="text" name="" id="mail" placeholder="请输入邮箱" value="" />
		<input type="button" name="" id="" value="check" onclick="check()" />
		<script type="text/javascript">
			function check() {
				var patt = {}
				patt.xh = /^20\d{7}$/g;
				patt.mm = /^\w{8,}$/g;
				patt.qq = /^[1-9]\d{4,11}$/g;
				patt.mail = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/g;
				var str = "";
				if (!patt.xh.test(document.getElementById("xh").value)) {
					str += "学号";
				}


				if (!patt.mm.test(document.getElementById("mm").value)) {
					str += "密码";
				}

				if (!patt.qq.test(document.getElementById("qq").value)) {
					str += "qq";
				}

				if (!patt.mail.test(document.getElementById("mail").value)) {
					str += "邮箱";
				}

				if (str == "") {
					alert("验证通过")
				} else {
					alert(str + "格式错误")
				}
			}
		</script>
	</body>
</html>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值