正则表达式的一部分使用方法:
字符类
[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]
确认密码
邮箱
手机
个人简介
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必须是[email protected]</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(); } } }
最终结果由图片显示:
![](http://dl2.iteye.com/upload/attachment/0115/3788/23bb4343-ef25-3543-b747-032f1f855181.png)
![](http://dl2.iteye.com/upload/attachment/0115/3790/a96b5b3b-bf6a-36bf-a1f1-cbee4d8b01f6.png)
![](http://dl2.iteye.com/upload/attachment/0115/3792/686d6933-f498-3ee3-b9a0-56297ba9c90e.png)