javascript 快速入门之第六章 表单验证

一:表单验证的基本概念

        为了保证用户提交的信息都是正确的,保证系统的安全性,验证是必不可少的,同时也为降低服务器的压力,减少资源损耗,在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。

二:表单验证的实现方式

  1. 内置对象String

  2. 正则表达式

  • 内置对象String基本概念

       String 对象用于处理文本,也就是字符串。一个字符串用于存储一系列的字符,通常 JS 字符 串是原始值,可以使用变量声明,也可以使用 new 关键字将字符串定义为一个对象,在 JS 中并不提倡使用 new 关键字创建对象。原始值字符串是没有属性和方法的,但是可以使用 JS 的属性和方法,因为 JS 在执行属性和方法时可以把原始值视为对象。 

  • 内置对象String的常用方法 

  1. concat():连接字符串

  2. charAt(index):返回指定位置的字符,如果参数 index 不在 0 与 string.length 之间,该方法将返回一个空字符串

  3. str.indexOf(searchString,startIndex):返回子字符串第一次出现的位置,从startIndex开始查找,找不到时返回-1

  4. str.lastIndexOf(searchString,startIndex): 从由往左找子字符串,找不到时返回-1

  5. substring(start,end) :提取字符串中介于两个指定下标之间的字符 substr(start,length):

  6. str.split(separator,number):字符串分隔成数组,第二个参数表示返回的字符串数组的最大长度

  7. str.replace(rgExp/substr,replaceText) : 执行的是查找并替换的操作, 返回替换后的字符串,

  8. str.match(rgExp): 正则匹配,在字符串内检索指定的值,或找到一个或多个正则表达式,该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置

  9. search():方法的用法等同于match,但是返回值为匹配的第一个位置。如果没有找到匹配,则返回-1

  10. trim():去除字符串收尾两端的空格,返回一个新的字符串,不改变原字符串

  11. toLowerCase(),toUpperCase():toLowerCase方法用于将一个字符串全部转为小写,toUpperCase则是全部转为大写。它们都返回一个新字符串,不改变原字符串。

  • onsubmiut事件

  • 该事件适用于做表单提交前的验证

        onsubmit 属性指定了一个事件句柄函数。当用户单击了表单中的 Submit 按钮而提交一个表单时,就会调用这个事件句柄函数。
如果 onsubmit 句柄返回 fasle,表单的元素就不会提交。如果该函数返回其他值或什么都没有返回,则表单会被提交。

 案例:演示内置对象String表单验证实现方式

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>

	<script type="text/javascript">

		function myf(){
			//验证账号是否满足要求
			//1.不能为空
			//2.长度限制
			var uname = document.getElementById("uname").value;
            
              //方法一
			// if(uname.trim().length == 0 || uname.trim() == ""){
			// 	alert("账号不能为空");
			// 	return false;
			// }
			
             //方法二
           //! ===>判断了空以及长度为0
			if(!uname){
				alert("账号不能为空");
				return false;
			}else{//不为空
				//验证长度问题(6-12)
				if(uname.trim().length <6 || uname.trim().length >12	){
					alert("长度必须在6-12之间");
					return false;
				}else{//符合长度要求
					//判断:只能是小写字母
					var flag = true;
					for(var i = 0;i<uname.length;i++){
						if(uname.charAt(i) < 'a' || uname.charAt(i) >'z'){
							flag = false;
							break;
						}
					}
					if(!flag){
						alert("账号不符合规则,必须是全小写字母");
						return false;
					}
				}
			}

			return true;
		}

	</script>

</head>
<body>
	
	<form action="success.html" method = "post" onsubmit="return myf();">
		账号: <input id="uname" type="text"> <br>
		<!-- 提交 -->
		<input type="submit" value = "注册">
	</form>




</body>
</html>
  • 获取焦点和失去焦点事件

  1. js当前正在和用户发生交互的节点称为焦点。可以类比为人类目光汇聚的地方。
  2. 获取焦点:节点.οnfοcus=function(){}
  3. 失去焦点:节点.οnblur=function(){}

  •  正则表达式基本概念

      正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。

搜索模式可用于文本搜索和文本替换。

  • 正则表达式常用方法

  1. \    将下一个字符标记为特殊符号

  2. ^    输入字符串的开始位置

  3. $    输入字符串的结束位置

  4. *    匹配前面子表达式零次或者多次

  5. +    匹配前面子表达式一次或者多次

  6. ?    匹配前面子表达式零次或者一次

  7. {n}    匹配前面子表达式出现 n 次

  8. {n,}    匹配前面子表达式至少 n 次

  9. {n,m}    匹配前面子字符串至少 n 次,最多 m 次

  10. .    匹配出了 /n 之外的任何当个字符

  11. (x | y)    匹配 x 或者 y

  12. [x y z]    匹配 x 或者 y 或者 z

  13. [^x y z]    匹配除了 x y z 都能匹配

  14. [ a-z]    匹配 a - z 之间的任意字符

  15. \b    匹配单词边界

  16. \B    匹配非单词边界

  17. \d    匹配一个数字字符 等价于 [ 0 - 9 ]

  18. \D    匹配一个非数字字符

  19. \f    换页符

  20. \r    回车符

  21. \n    换行符

  22. \s    空白符

  23. \S    非空白符

  24. \t    制表符

  25. \v    垂直制表符

  26. \w    匹配包括从下划线的任意单词字符 等价于 [ a-z A-Z 0-9 _ ]

 案例:演示正则表达式表单验证实现方式

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
		span{
			color: red;
			font-size: 10px;
		}
	</style>

	<script type="text/javascript">
		function $(id){
			return document.getElementById(id);
		}
		//账户的正则验证:验证账号必须在6-12位数
		function myuname(){
			var uname = $("uname").value;
			//规则
			var regex = /^\d{6,12}$/;
			if(!regex.test(uname)){
				$("uname_error").innerHTML = "账号必须在6-12之间";
				return false;
			}
			return true;
		}

		//账户的正则验证:验证账号必须在6-12位数
		function mypwd(){
			var pwd = $("pwd").value;
			//规则
			var regex = /^\d{8}$/;
			if(!regex.test(pwd)){
				$("pwd_error").innerHTML = "密码必须在8位";
				return false;
			}
			return true;
		}

		//验证年龄 1-150
		function myage(){
			var age = $("age").value;
			//规则--
			//1-9   10-99   100-149  150
			var regex = /^(([1-9])|[1-9]\d|1[0-4]\d|150)$/;
			console.log(regex.test(age));
			if(!regex.test(age)){

				$("age_error").innerHTML = "年龄必须在1-150之间";
				return false;
			}else{
				$("age_error").innerHTML = "ok";
			}
			return true;
		}

		//验证邮箱
		function myemail(){
			var email = $("email").value;
			//1561868458@qq.com   zkingzz@sina.cn
			var regex = /\w{4,12}@[a-zA-Z]{2,6}\.com|cn/;
			if(!regex.test(email)){
				$("email_error").innerHTML = "邮箱不符合要求";
				return false;
			}else{
				$("email_error").innerHTML = "ok";
			}
			return true;
		}

		function myDemo(){
			var unameDemo = myuname();
			var pwdDemo = mypwd();
			if(!unameDemo && ! pwdDemo){
				return false;
			}
			return true;
		}
	</script>
</head>
<body>
	<form action="success.html" method="post" onsubmit="return myDemo();">

		账号 <input id="uname" type="text" onblur="myuname();"> <span id="uname_error"></span>
		<br>
		密码 <input id="pwd" type="text" onblur="mypwd();"> <span id="pwd_error"></span>
		<br>
		年龄 <input id="age" type="text" onblur="myage();"> <span id="age_error"></span>
		<br>
		邮箱 <input id="email" type="text" onblur="myemail();"> <span id="email_error"></span>
		<br>
		

		<input type="submit" value = "注册">
	</form>

	<!-- 
		验证账号必须在6-12位数
		验证密码必须是8位
		验证年龄 1-150
		验证邮箱必须符合规则 @ .
		验证手机号  11位

		regex = /1[356789]\d{9}/

		验证座机 0731-12345678-01
		regex =/(\d{3,4}\-)?(\d{7,8})(\-\d{2})?/ 

		验证身份证
		regex = /\d{15}|\d{18}/;
	 -->
</body>
</html>

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值