我要在一个注册页面收集身份证号码,请问应该如何进行验证呢?我用javaEE开发的。。
解决方案 »
- jQuery或$ 不能识别问题
- 一个关于JAVA的疑问
- 随机平均分配问题
- 我使用了SSH标注来开发我的项目,但是注入不了Service实体类
- 学JSP什么书比较好啊?有什么经典的教材啊?谢谢!
- 关于外键映射?
- 请教Hibernate多表操作的例子
- hibernate 联合主要 多表查询问题!!!
- 请问怎样用JAVA APPLET编写一个视频播放程序以及使它支持FLASH动画和其他流媒体呢???如果用APPLICATION,那怎样编写呢????
- struts的<logic:iterate id="employee" name="employees">找不着employees的问题
- getJSON为什么无法执行回调函数?
- <img 调用action如何带参数
/**
* 是否為中國身分證字號
* @param id 要被檢查的字串
* @param year 出生年
* @param month 出生月
* @param day 出生日
* @param gender 性別,0:女性 1:男性
* @param advCheck 18码身分证是否要检查出生年月日和性别
* @return true:是中國身分證字號 false:不是中國身分證字號
*/
public static boolean isCnId(String id, int year, int month, int day, int gender, boolean advCheck) {
boolean result = false;
if (id == null) {
return false;
} else {
if (id.length() == 15) {
if (year > 0 && month > 0 && day > 0) {
result = advCheckCnId (id, year, month, day, gender);
}
} else if (id.length() == 18) {
if (advCheck) {
result = advCheckCnId (id, year, month, day, gender);
if (!result) {
return result;
}
}
int[] wi = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1};
// verify digit
String[] vi = {"1","0","X","9","8","7","6","5","4","3","2"};
int[] ai = new int[17];
String verify = id.substring(17, 18).toUpperCase();
int remaining = 0;
id = id.substring(0, 17);
if (!isPositiveInteger(id)) {
return false;
} else {
int sum = 0;
int k = 0;
for (int i = 0; i < 17; i++) {
k = Integer.parseInt(id.substring(i, i + 1));
ai[i] = k;
}
for (int i = 0; i < 17; i++) {
sum = sum + wi[i] * ai[i];
}
remaining = sum % 11;
if (verify.equals(remaining == 2 ? "X" : vi[remaining])) {
result = true;
}
}
}
}
return result;
}
var date, Ai,Ai1;
var verify = "10X98765432";
var verify1 = "10x98765432";
var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
var area = ['','','','','','','','','','','','北京','天津','河北','山西','内蒙古','','','','','','辽宁','吉林','黑龙江','','','','','','','','上海','江苏','浙江','安微','福建','江西','山东','','','','河南','湖北','湖南','广东','广西','海南','','','','重庆','四川','贵州','云南','西藏','','','','','','','陕西','甘肃','青海','宁夏','新疆','','','','','','台湾','','','','','','','','','','香港','澳门','','','','','','','','','国外'];
var re = number.match(/^(\d{2})\d{4}(((\d{2})(\d{2})(\d{2})(\d{3}))|((\d{4})(\d{2})(\d{2})(\d{3}[xX\d])))$/i);
if(re == null) return false;
if(re[1] >= area.length || area[re[1]] == "") return false;
if(re[2].length == 12){
Ai = number.substr(0, 17);
Ai1 = number.substr(0, 17);
date = [re[9], re[10], re[11]].join("-");
}
else{
Ai = number.substr(0, 6) + "19" + number.substr(6);
Ai1 = number.substr(0, 6) + "19" + number.substr(6);
date = ["19" + re[4], re[5], re[6]].join("-");
}
if(!this.IsDate(date, "ymd")) return false;
var sum = 0;
var sum1 = 0;
for(var i = 0;i<=16;i++){
sum += Ai.charAt(i) * Wi[i];
sum1 += Ai1.charAt(i) * Wi[i];
}
Ai += verify.charAt(sum%11);
Ai1 += verify1.charAt(sum1%11);
return (number.length ==15 || number.length == 18 && (number == Ai||number == Ai1));
}
return parseDate(op, formatString) != null;
}
function parseDate(str, fmtDate, fmtTime) {
var reg = null; if("dmy" == fmtDate){
reg = "^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))";
} else if ("ymd" == fmtDate){
//alert(fmtDate);
reg = "^(\\d{1,4})([-])(\\d{1,2})([-])(\\d{1,2})";
} else {
reg = "^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})";
} if(!isNull(fmtTime)) {
if("hm" == fmtTime) reg += "\\s+(\\d{1,2}):(\\d{1,2})";
else if("hms" == fmtTime) reg += "\\s+(\\d{1,2}):(\\d{1,2}):(\\d{1,2})";
else if("hm_s" == fmtTime) reg += "\\s+(\\d{1,2}):(\\d{1,2})(:(\\d{1,2})){0,1}";
}
reg += "$"; var d = getDateFields(str.match(new RegExp(reg)), fmtDate); if(d instanceof Array
&& isValidDate(d[0], d[1], d[2])
&& isValidTime(d[3], d[4], d[5])) return d; return null;
}
给俺个url
<form name="submitForm">
<field property="customer.firstName"
depends="required,mask,minlength">
<arg0 key="submitForm.customer.firstname" />
<arg1 name="minlength" key="${var:minlength}"
resource="false" />
<var>
<var-name>mask</var-name>
<var-value>^\w+$</var-value>
</var>
<var>
<var-name>minlength</var-name>
<var-value>5</var-value>
</var>
</field>
<field property="customer.lastName"
depends="required,mask,maxlength">
<msg name="mask" key="submitForm.lastname.maskmsg" />
<arg0 key="submitForm.customer.lastname" />
<arg1 name="maxlength" key="${var:maxlength}"
resource="false" />
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z]*$</var-value>
</var>
<var>
<var-name>maxlength</var-name>
<var-value>10</var-value>
</var>
</field>
<field property="customer.address" depends="required">
<arg0 key="submitForm.customer.address" />
</field>
<field property="customer.city" depends="required,mask">
<arg0 key="submitForm.customer.city" />
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z]*$</var-value>
</var>
</field>
<field property="customer.state" depends="required,mask">
<arg0 key="submitForm.customer.state" />
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z]*$</var-value>
</var>
</field>
...............
不懂得话还可以和你交流....
动态验证框架是属于服务器端验证。前台发送请求到action之前前进行拦截并去匹配验证规则。当然设置一下,就可以自动为你生成前台的所有js验证代码。
个人觉得jQuery有一个验证框架jquery.validate是很棒的前台验证工具。如果你做只前台验证,这个再好不过了!它可以响应每个输入的字符立即提示配置好的信息。
例如:
// 信息验证
$(document).ready(function() { createMajor();
$("#examForm").validate( {
rules : { examName : {
required : true,
minlength : 3,
maxlength : 10
},
limiteTime : {
required : true,
digits : true,
min : 15,
max : 200 }, score : {
required : true,
number : true,
min : 10,
max : 150
},
description : {
required : true,
minlength : 15 } },
messages : { examName : {
required : "请输入试卷名",
minlength : "试卷名需两个字以上",
maxlength : "试卷名不能大于5个汉字"
},
limiteTime : {
required : "请输入考试限制时间",
digits : "请输入数字",
min : "限制时间必须大于15分钟",
max : "限制时间必须小于200分钟" },
score : {
required : "请输入试卷总分",
number : "请输入整数",
min : "总分必须大于10分",
max : "总分必须小于150分"
},
description : {
required : "请输入试卷描述",
minlength : "试卷描述不能小于15个字符" } }
}); });