`
leaf-stop
  • 浏览: 26544 次
  • 性别: 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这个可以通过。

相关推荐

    正则表达式

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

    一个java正则表达式工具类源代码.zip(内含Regexp.java文件)

    * Summary of regular-expression constructs 正则表达式结构简介: * Construct Matches * Characters 字符: * x The character x x 字符 x * \\ The ...

    新浪爬虫.zip

    常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...

    微信小程序支付,企业付款,模板消息,企业付款至银行卡,微信退款 等封装,输入参数即可无需其他操作.zip

    常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...

    Perl 实例精解(第三版).pdf

    对每个主题都使用了范例说明,从Perl变量、正则表达式,到编写报表、CGI脚本和网络应用,并对范例程序进行了解释。读者可以很容易地通过这些范例掌握Perl语言的语法。附录含有完整的函数和定义、命令行开关、特殊...

    JAVA_API1.6文档(中文)

    java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text ...

    asp.net知识库

    在ASP.NET中使用WINDOWS验证方式连接SQL SERVER数据库 改进ADO.Net数据库访问方式 ASP.NET 2.0 绑定高级技巧 简单实用的DataSet更新数据库的类+总结 [ADO.NET]由数据库触发器引发的问题 为ASP.NET封装的SQL数据库...

    JavaAPI1.6中文chm文档 part1

    java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text ...

    Java 1.6 API 中文 New

    java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text ...

    JavaAPI中文chm文档 part2

    java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text ...

    java api最新7.0

    java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text ...

    JDK_1_6 API

    java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text ...

    [Java参考文档].JDK_API 1.6

    java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text ...

    java jdk-api-1.6 中文 chmd

    java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text ...

    [Java参考文档]

    java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text ...

Global site tag (gtag.js) - Google Analytics