学习永无止尽,今天来搞搞正则表达式。首先大致看了一下所有的匹配规则,看完之后有了一个大概的了解。但是似乎并没有什么卵用,稍稍复杂一点的一样不会写。而且如果不是经常用这玩意儿谁记得住呢。如果大家有什么好的建议,欢迎各位大神指教。
毕竟是学习,总还是要练习一下吧,于是还是搞了个小demo练练手。下面是笔者认为经常会用到的一些匹配规则,当然只是少数几个:
1、用户名(只能由字母数字下划线和汉字组成):
/^[\u2E80-\u9FFFa-z0-9_-]{3,16}$/
2、年龄(只能是数字,至于范围再单独验证):
/^\d*$/
3、手机号码:
/^(13[0-9]|14[0-9]|15[0-9]|18[0-9])\d{8}$/
4、电子邮箱:
/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/
5、密码(只能字母数字下划线组成,且长度须大于等于6):
/^[a-z0-9_-]{6,18}$/
6、url:
/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
7、ip:
/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
总结一下,发现这些东西是没必要记住的。需要用到的时候,只要有网百度一下完全就可以搞定。
最后,把我练习的小demo也贴上来。
页面中使用了JQuery的弹窗插件layer,使用时需要拷如相应的文件。可以去官网下载。拷贝之后修改相应的导入路径,确保路径正确
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript" src="jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="layer/layer.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#div1').attr('style','margin-left:auto;margin-right:auto;margin-top:100px;height:600px;width:400px;border: 1px solid #000;');
$('#username').blur(function(){//验证用户名只能数字下划线字母和汉字组成
var username = $('#username').val();
if(!/^[\u2E80-\u9FFFa-z0-9_-]{3,16}$/.test(username)){
if(username.length<3|username.length>19){
//$("#username").focus();
layer.msg('用户名必须在3个字节及以上20个字符以下');
}else{
layer.msg('用户名仅有字母数字和下划线组成');
}
}else{
}
});
$('#age').blur(function(){//验证年龄只能为数字,且只能0~150之间
var age = $('#age').val();
if(/^\d*$/.test(age)){
//layer.msg('number');
}else{
layer.msg('年龄只能为数字');
$('#age').val(0);
}
if(age<=0|age>150)
{
layer.msg('年龄不合法!请输入0~150之间的数字');
$('#age').val(0);
}
});
$('#phone').blur(function(){//验证电话好吗
var phone = $('#phone').val();
if(!/^(13[0-9]|14[0-9]|15[0-9]|18[0-9])\d{8}$/.test(phone))
{
layer.msg('电话号码有误,请检查!');
}
});
$('#email').blur(function(){//验证邮箱格式
var email = $('#email').val();
if(!/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/.test(email))
{
layer.msg('邮箱格式有误,请检查');
}
});
$('#password').blur(function(){//密码验证,由字母数字或下划线组成。长度大于等于6
var password = $('#password').val();
if(!/^[a-z0-9_-]{6,18}$/.test(password))
{
layer.msg('密码必须由字母数字或下划线组成且长度必须大于6');
}
});
$('#url').blur(function(){
var url = $('#url').val();
if(!/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/.test(url))
{
layer.msg('您输入的路径格式有问题,请检查!');
}
});
});
</script>
</head>
<body>
<div id="div1">
<p style="font-size:20;text-align:center">基本信息</p>
<div style="margin-left:80px">
姓名:<input type="text" id="username"><br/><br/>
年龄:<input type="text" id="age"><br/><br/>
手机:<input type="text" id="phone"/><br/><br/>
邮箱:<input type="text" id="email"/><br/><br/>
密码:<input type="password" id="password"/><br/><br/>
主页:<input type="text" id="url"/><br/><br/>
</div>
</div>
</body>
</html>