前端学习之JS+正则表达式(写一个简单的注册页面)

注册页面

在日常生活中我们常常需要在各种软件中注册账号信息。包括社交软件,游戏等等。他们对于账号密码的需求也大不一样。有的较为官方的软件机构网址等需要比较复杂的账号密码,而有的则比较宽松。我们知道注册页面其实就是一个表单,用户填写完表单后提交然后注册。
在这里插入图片描述

正则表达式

那么如何让用户按照程序猿规定的规则进行注册呢?一般会用到正则表达式,正则表达式在百度百科上是这样介绍:正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 简单来说就是提前写好规则,用户在输入时使用onblur事件来查看用户输入的是不是满足规则。下面直接上代码

HTML部分

<div id="app">		
	<form action="#" method="post" class="form">
		用户名: <input type="text" name="username" id="username" onblur="user"/><span id="tipuser"></span><br>
		密 码: <input type="text" name="password" id="password" onblur="pass"/><span id="tippass"></span><br>
		确认密码:<input type="text" name="checkpas" id="checkpas" onblur="checkpass"/><span id="tipcheckpass"></span><br>
		邮 箱: <input type="text" name="email" id="email" onblur="email"/><span id="tipemail"></span><br>	
		<input type="submit" value="注册" style="float: left;margin: 10px;"/>
		<input type="reset" value="重置" style="float: right;margin: 10px;"/>
	</form>
	</div>

这里值得注意的是要设置好每个input的id,在js中通过dom操作来获取值以及对span的innertext进行变幻。不再赘述

JS部分

//用户名部分
			//获取username的span标签
			var usertip = document.getElementById("tipuser");
			//获取用户名
			var user=document.getElementById("username")
			var username=user.value;
			
			//给用户名文本框绑定blur事件
			user.onblur=function(){
				var username=user.value;
				//去除前后空白
				var username=username.trim();
				
				//判断用户名是否为空
				if(username!==""){
					//username不为空
					//继续判断长度[6-14]
					if(user.value.length<6||user.value.length>14){
						//用户名长度非法
						usertip.innerText="对不起!用户名长度必须要在[6~14]位之间";
					}else{
						//用户名长度合法
						//继续判断是否含有特殊符号
						//使用正则表达式
						var regExp=/^[A-Za-z0-9]+$/;
						var ok=regExp.test(username);
						if(ok){
							//用户名最终合法
							usertip.style.color="green";
							usertip.innerText="√您输入的用户名可以使用";
						}else{
							//用户名有特殊符号
							usertip.innerText="对不起!用户名只能由数字和字母组成";
						}
					}

				}else {
					//username为空
					usertip.innerText="对不起!用户名不能为空!";
				}
			}
			//给username获取焦点函数
			user.onfocus =function(){
				//获取用户名
				var user=document.getElementById("username")
				var username=user.value;
				
				if(usertip.innerText!=""){
					//注意不要获取错
					//之前一直username.value但是username其实就是user.value,容易记混
					user.value="";
					
				}
				//清空span
				usertip.innerText="";
			}

首先获取到输入框id为username的input的值。使用trim函数能够去除用户输入的空白。避免用户输入了6个空格也判定为6个字符串而导致错误。然后使用if语句进行判断不为空继续进入下一if判断,若为空则让span展示内容“对不起!用户名不能为空”。
接下来是用户名长度,我设置为6~14位。用if语句即可 如果小于6位大于14位直接提示,如果满足长度条件。
最后一个if判断。这里就需要正则表达式帮忙。 var一个对象用来引用正则表达式,正则表达式用两个’/'进行包裹。‘^‘作为开头,‘$‘结束。 / ^ [A-Za-z0-9 ]+ $ /的意思就是输入的字符串可以是字母,大小写都可以以及数字的组合。不能出现特殊符号。

var ok=regExp.test(username);

语句的作用就是检测username是否符合条件,也就是用户输入的用户名是否满足正则表达式的要求。返回的是true或flase,最后一个if基于返回的值做判断即可。
最后考虑到交互的方便性。多加一个事件,focus事件,当用户点击input框时执行。作用是当用户上一次输入的用户名不合法的时候 把非法的用户名清空掉。判断的条件则是span内容的有无。如果不为空说明刚刚用户输入的是错误格式的用户名,所以直接把value清空。

总结

接下里的密码确认密码邮箱等等都是照猫画虎。唯一的区别就是正则表达式,但是我们遇到使用正则表达式的机会时,大多不需要自己编写。许多常用的正则表达式百度一下都有,也可以下载一个正则表达式的帮助文档,上面的例子基本满足基础的开发需求。

  • 10
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的登录注册页面的示例代码: ```html <!DOCTYPE html> <html> <head> <title>Login/Register</title> <script type="text/javascript"> // 定义正则表达式 var emailRegex = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+$/; var passwordRegex = /^[a-zA-Z0-9_]{6,20}$/; // 登录函数 function login() { // 获取输入框的值 var email = document.getElementById("login_email").value; var password = document.getElementById("login_password").value; // 判断输入是否合法 if (!emailRegex.test(email)) { alert("请输入正确的邮箱地址!"); return; } if (!passwordRegex.test(password)) { alert("密码长度应为6-20位,仅包含字母、数字和下划线!"); return; } // TODO:向服务器发送登录请求 } // 注册函数 function register() { // 获取输入框的值 var email = document.getElementById("register_email").value; var password = document.getElementById("register_password").value; var confirm_password = document.getElementById("confirm_password").value; // 判断输入是否合法 if (!emailRegex.test(email)) { alert("请输入正确的邮箱地址!"); return; } if (!passwordRegex.test(password)) { alert("密码长度应为6-20位,仅包含字母、数字和下划线!"); return; } if (password !== confirm_password) { alert("两次输入的密码不一致,请重新输入!"); return; } // TODO:向服务器发送注册请求 } </script> </head> <body> <h1>Login</h1> <form> <label>Email:</label> <input type="text" id="login_email"><br> <label>Password:</label> <input type="password" id="login_password"><br> <input type="button" value="Login" onclick="login()"> </form> <h1>Register</h1> <form> <label>Email:</label> <input type="text" id="register_email"><br> <label>Password:</label> <input type="password" id="register_password"><br> <label>Confirm Password:</label> <input type="password" id="confirm_password"><br> <input type="button" value="Register" onclick="register()"> </form> </body> </html> ``` 在上面的代码中,我们定义了两个正则表达式 `emailRegex` 和 `passwordRegex`,分别用于检验邮箱地址和密码的合法性。在登录和注册函数中,我们通过调用 `test()` 方法来判断输入框中的值是否符合正则表达式的规则,如果不符合,则弹出提示框提示用户重新输入。 需要注意的是,这只是一个简单的示例,实际开发中还需要考虑很多其他因素,比如防止 XSS 攻击、CSRF 攻击等等。而且,前端的验证只是起到了一个辅助的作用,最终的验证还是需要在后端进行。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值