`
leaf-stop
  • 浏览: 27463 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
社区版块
存档分类
最新评论

在HTML中使用正则表达式规范输入数据

    博客分类:
  • html
阅读更多
最近学习了HTML网页的简单制作和如何使用正则表达式规范输入的数据是否符合要求,制作的页面很简陋,但部分知识点都包含在其中:
正则表达式的一部分使用方法:
字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)

预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]

Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次


具体使用案例:
1.创建用户表
帐号[6~20,数字,字母,下划线]
密码[6~20]
确认密码
qq
邮箱
手机
个人简介

2.创建一个注册页面[reg.html]
3.在注册页面上使用js+正则表达式验证注册数据
<!DOCTYPE html>
<html>
<head>
<title>注册验证正则效果图</title>
<meta http-equiv="content-type" content="text/html;charset=gbk" />
<script type="text/javascript">
	function check() {
		var zhanghao = document.getElementById('zhanghao').value;
		var mima = document.getElementById('mima').value;
		var querenmima = document.getElementById('querenmima').value;
		var qq = document.getElementById('QQ').value;
		var emile = document.getElementById('emile').value;
		var telephone = document.getElementById('telephone').value;
		var jianjie = document.getElementById('jianjie').value;

		var nameText = document.getElementById('nameText');
		if (zhanghao == '') {
			nameText.innerHTML = "<img src='false.gif'/><span style='color:#cc0000'>账号不能为空</span>";
			return false;
		} else if (zhanghao.match('\\w{6,20}') != zhanghao) {
			nameText.innerHTML = "<img src='false.gif'/><span style='color:#cc0000'>帐号必须是6到20位的数字,字母,下划线</span>"
			return false;
		} else {
			nameText.innerHTML = "<img src='right.gif'/><span style='color:#00cc00'>账号ok</span>"
		}

		var pawText = document.getElementById('pawText');
		if (mima == '') {
			pawText.innerHTML = "<img src='false.gif'/><span style='color:#cc0000'>密码不能为空</span>";
			return false;
		} else if (mima.match('\\w{6,20}') != mima) {
			pawText.innerHTML = "<img src='false.gif'/><span style='color:#cc0000'>密码必须是6到20位的数字,字母,下划线</span>"
			return false;
		} else {
			pawText.innerHTML = "<img src='right.gif'/><span style='color:#00cc00'>密码ok</span>"
		}

		var pawText2 = document.getElementById('pawText2');
		if (querenmima != mima) {
			pawText2.innerHTML = "<img src='false.gif'/><span style='color:#cc0000'>两次密码不一致</span>";
			return false;
		} else {
			pawText2.innerHTML = "<img src='right.gif'/><span style='color:#00cc00'>两次密码ok</span>"
		}

		var qqText = document.getElementById('qqText');
		if (qq == '') {
			qqText.innerHTML = "<img src='false.gif'/><span style='color:#cc0000'>QQ账号不能为空</span>";
			return false;
		} else if (qq.match('\\d{5,15}') != qq) {
			qqText.innerHTML = "<img src='false.gif'/><span style='color:#cc0000'>QQ帐号必须是5到15位的数字,字母,下划线</span>"
			return false;
		} else {
			qqText.innerHTML = "<img src='right.gif'/><span style='color:#00cc00'>QQ账号ok</span>"
		}

		var emileText = document.getElementById('emileText');
		if (emile == '') {
			emileText.innerHTML = "<img src='false.gif'/><span style='color:#cc0000'>emile不能为空</span>";
			return false;
		} else if (emile.match('\\w+@\\w+\.\\w+[\.\\w+]+') != emile) {
			emileText.innerHTML = "<img src='false.gif'/><span style='color:#cc0000'>emile必须是xxx@xx.xxx</span>"
			return false;
		} else {
			emileText.innerHTML = "<img src='right.gif'/><span style='color:#00cc00'>emile ok</span>"
		}

		var telText = document.getElementById('telText');
		if (telephone == '') {
			telText.innerHTML = "<img src='false.gif'/><span style='color:#cc0000'>手机号码不能为空</span>";
			return false;
		} else if (telephone.match('\\d{11}') != telephone) {
			telText.innerHTML = "<img src='false.gif'/><span style='color:#cc0000'>手机是11位数字</span>"
			return false;
		} else {
			telText.innerHTML = "<img src='right.gif'/><span style='color:#00cc00'>手机号码ok</span>"
		}

		var jianjieText = document.getElementById('jianjieText');
		if (jianjie == '') {
			jianjieText.innerHTML = "<img src='false.gif'/><span style='color:#cc0000'>个人简介不能为空</span>";
			return false;
		} else if (jianjie.match('\.+') != jianjie) {
			jianjieText.innerHTML = "<img src='false.gif'/><span style='color:#cc0000'>无上限</span>"
			return false;
		} else {
			jianjieText.innerHTML = "<img src='right.gif'/><span style='color:#00cc00'>个人简介ok</span>"
		}

	}
</script>
</head>

<body>
	<form action="ZhuceServlet" method="post" onsubmit="return check()">
		<pre>
	账 号:   <input type="text" id="zhanghao" name="zhanghao"
				onblur="check()" /><span id="nameText"></span>

	密 码:   <input type="password" id="mima" name="mima" onblur="check()" /><span
				id="pawText"></span>

	确认密码:<input type="password" id="querenmima" name="querenmima"
				onblur="check()" /><span id="pawText2"></span>

	QQ:      <input type="text" id="QQ" name="QQ" onblur="check()" /><span
				id="qqText"></span>

	电子邮件:<input type="text" id="emile" name="emile" onblur="check()" /><span
				id="emileText"></span>

	移动电话:<input type="text" id="telephone" name="telephone" onblur="check()" /><span
				id="telText"></span>

	个人简介:<textarea rows="5" cols="19" id="jianjie" name="jianjie"
				onblur="check()" /></textarea><span id="jianjieText"></span>
			

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


4.定义一个Servlet接收注册数据
package Servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dao.ZhuceDAO;
import bean.ZhuCe;

public class ZhuceServlet extends HttpServlet {
	@Override
	public void service(HttpServletRequest request, HttpServletResponse response)
			throws IOException, ServletException {
		
		String zhanghao = request.getParameter("zhanghao");
		String mima=request.getParameter("mima");
		String querenmima=request.getParameter("querenmima");
		String QQ=request.getParameter("QQ");
		String emile=request.getParameter("emile");
		String telephone=request.getParameter("telephone");
		String jianjie=request.getParameter("jianjie");
		
		ZhuCe zhu=new ZhuCe();
		zhu.setZhanghao(zhanghao);
		zhu.setMima(mima);
		zhu.setQuerenmima(querenmima);
		Double qq=Double.parseDouble(QQ);
		zhu.setQQ(qq);
		zhu.setEmile(emile);
		Double tel=Double.parseDouble(telephone);
		zhu.setTelephone(tel);
		zhu.setJianjie(jianjie);
		
		ZhuceDAO zdao=new ZhuceDAO();
		zdao.setZhuce(zhu);
		
//		PrintWriter out = response.getWriter();
//		out.print("Succeed");
//		out.flush();
	//	System.out.println("chenggong"+zhanghao);
		
		// 响应
		PrintWriter out = response.getWriter();
		//out.print("<h2>Succeed</h2>");
		
		out.print("<table border=1><tr><td>Zhanghao</td><td>Mima</td><td>Querenmima</td><td>QQ</td><td>Emile</td><td>Telephone</td><td>Jianjie</td></tr>");
		out.print("<tr><td>" + zhu.getZhanghao() + "</td><td>" + zhu.getMima()
				+ "</td><td>" + zhu.getQuerenmima() + "</td><td>" + zhu.getQQ() 
				+ "</td><td>" + zhu.getEmile() + "</td><td>" + zhu.getTelephone()
				+ "</td><td>" + zhu.getJianjie() + "</td></tr>");

		out.print("</table>");
		out.flush();
	}
}


5.将注册数据保存到数据库
package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;

import bean.ZhuCe;

public class ZhuceDAO {
	
	public void setZhuce(ZhuCe zc) {
		
		try {
			Connection conn = DBUtil.getConn();
			String sql = "insert into zhuce values(?,?,?,?,?,?,?)";
			PreparedStatement pstm = conn.prepareStatement(sql);
			pstm.setString(1, zc.getZhanghao());
			pstm.setString(2, zc.getMima());
			pstm.setString(3, zc.getQuerenmima());
			pstm.setDouble(4, zc.getQQ());
			pstm.setString(5, zc.getEmile());
			pstm.setDouble(6, zc.getTelephone());
			pstm.setString(7, zc.getJianjie());
			int rs = pstm.executeUpdate();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	
}

最终结果由图片显示:





  • 大小: 10.2 KB
  • 大小: 9.5 KB
  • 大小: 4 KB
1
2
分享到:
评论
2 楼 leaf-stop 2016-02-29  
BS_YG 写道
就用你的注册了,0.0,我这不是搞事吗,电子邮箱正则表达式有点问题,1@11这个可以通过。

好像是有问题,我都没发现,改成emile.match('\\w+@\\w+\.\\w+[\.\\w+]+')好像就可以了,你试一下还有没有问题
1 楼 BS_YG 2016-02-29  
就用你的注册了,0.0,我这不是搞事吗,电子邮箱正则表达式有点问题,1@11这个可以通过。

相关推荐

    Java正则表达式 Java 正则表达式

    - 例如,可以使用正则表达式检查输入的IP地址是否符合规范,从网页文本中提取电子邮件地址或者超链接。 2. **核心类** - `java.lang.String`:提供了`matches()`方法,可以直接对字符串进行正则匹配。 - `java....

    文本框输入限制(正则表达式)

    综上所述,正则表达式在文本框输入限制的应用中扮演了核心角色,能够有效控制和规范用户输入,提升数据质量和安全性。开发者可以根据实际需求选择合适的正则表达式和事件监听策略,实现高效且灵活的输入控制。

    xml需求文档及正则表达式介绍

    在编程语言和文本编辑器中,正则表达式经常用于数据提取、输入验证等场景。以下是一些基本的正则表达式概念和符号: 1. 字符匹配:"."代表任意单个字符,"*"表示前面的字符可以出现零次或多次。 2. 重复:"{n}"表示...

    正则表达式规程大全

    通过这些示例,我们可以看到正则表达式的强大功能,它们能够帮助我们对输入数据进行严格控制,确保数据的准确性和一致性。在开发Web应用、处理用户输入或进行数据清理时,正则表达式是不可或缺的工具。

    极品中的极品正则表达式工具,

    4. **替换功能**:除了查找匹配,还可能支持基于正则表达式的替换操作,可以批量修改大量数据中的特定模式。 5. **教程与参考资料**:优秀的正则表达式工具通常会集成基础教程或常用正则表达式模式库,帮助初学者...

    Struts2,Spring,MySql,正则表达式等各类API帮助文档

    在编程中,正则表达式可以用来验证用户输入、提取信息或者进行数据清洗。正则表达式的语法丰富,如`.`代表任意字符,`*`表示前面的字符可以出现零次或多次,`^`和`$`分别表示字符串的开始和结束等。熟练掌握正则...

    正则表达式—JavaScript

    在`regextester.html`这样的正则表达式测试器中,用户可以输入正则表达式和测试字符串,查看是否匹配以及匹配的详细结果。这对于学习和调试正则表达式非常有帮助,因为它提供了即时反馈,无需编写完整的程序即可尝试...

    正则表达式工具,适合新手使用

    - **数据验证**:在网页表单中,用正则表达式检查输入数据的格式是否正确,如邮箱、电话号码等。 - **文本提取**:从日志文件、网页中提取有用信息。 - **代码编辑器**:很多代码编辑器支持正则表达式的查找和...

    Java-PHP正则表达式的使用

    通过上述知识点的介绍,我们可以看出正则表达式是一种非常强大的工具,能够在各种编程语言中实现对字符串的精确匹配和操作。无论是数据验证、数据清洗还是文本分析,正则表达式都能提供极大的帮助。在实际开发过程中...

    正则表达式

    如果想在正则表达式中使用特殊的标点符号,必须在它们之前加上一个 "\" . 2.字符类 将单独的直接符放进中括号内就可以组合成字符类.一个字符类和它所包含的任何一个字符都匹配,所以正则表达式 / [abc] / 和字母 ...

    ️ 讲解关于正则表达式,前端,后端等相关的知识。也记录自己的一些学习内容.zip

    在前端开发中,正则表达式常用于表单验证,如邮箱格式、手机号码格式的检查;在后端开发中,它用于数据清洗、路由匹配或数据库查询过滤等。 前端开发中的正则表达式应用: 1. **表单验证**:例如,验证用户输入的...

    工作中收藏常用、使用的正则表达式语句

    根据提供的标题、描述以及部分代码内容,我们可以整理出一系列与正则表达式相关的知识点,这些知识点主要用于处理文本数据,例如验证、提取特定格式的数据等。下面将详细介绍这些知识点。 ### 1. 匹配中文字符 **...

    常用的正则表达式

    在日常开发工作中,正则表达式的应用非常广泛,无论是表单验证、文本处理还是数据清洗等场景都离不开它。以下将详细介绍部分常用的正则表达式及其应用场景。 #### 1. 匹配中文字符 **正则表达式**: `[\u4e00-\u9fa5...

    正则表达式详细说明说明

    - **示例**:在数据分析过程中,根据不同的业务逻辑选择合适的正则表达式,确保数据的准确性。 #### 匹配特定字符串 - **应用场景**:验证字符串是否仅包含指定的字符集。 - **示例**:在密码设置规则中,可以规定...

    页面验证正则表达式

    根据提供的文件信息,我们可以整理出一系列与页面验证相关的正则表达式知识点,这些知识点涵盖了从中文...这些正则表达式在实际开发过程中非常实用,可以帮助开发者快速完成数据校验任务,提高用户体验和程序的安全性。

    常用正则表达式举例已经写出代码

    正则表达式是一种强大的文本处理工具,被广泛应用于各种编程语言中,用于实现字符串搜索、替换、解析等功能。本文将根据给定的部分内容,详细解释其中提及的正则表达式,并提供实际应用场景。 #### 二、正则表达式...

    正则表达式帮助文件chm

    在编程中,大多数现代编程语言都支持正则表达式,它们通常被包含在标准库中,或者作为语言内置的特性。例如,Python有`re`模块,JavaScript有`RegExp`对象,Java有`java.util.regex`包等。 正则表达式的核心元素...

Global site tag (gtag.js) - Google Analytics