JAVA中的正则表达式:
需求:判断一个字符串是否包含中文,数字,或字母。
String s = "1中r/";
String[] ss = s.split("");
for(int i=1;i<ss.length;i++){
Pattern.matches("[a-zA-Z]", ss[i]);//字母
Pattern.matches("[\u4e00-\u9fa5]", ss[i]);//中文
Pattern.matches("[0-9]", ss[i]);//数字
}
JQUERY中的正则表达式:
需求:jsp页面有输入密码和再次输入密码,要求这两个密码输入相同,且密码只能由字母或数字或下划线或部分特殊字符(0到9特殊字符)组成,长度最大为32.
本例基于easyui完成。
JQUERY代码:
因为这两个需求easyui本身没有实现,不能直接调用,所以需要先自定义两个方法:
$(function() {
$.extend($.fn.validatebox.defaults.rules, {
equals: {
validator: function(value,param){
return value == $(param[0]).val();
},
message: '两次输入密码不一致'
},
check: {
validator: function (value, param) {
return checkPassword(value,param);
},
message: '密码只能由字母或数字或下划线或部分特殊字符组成,且最大长度为{0}' //{0}表示参数的值,即32
}
});
});
思路:把输入的密码值拆分开,如果长度大于32,则返回false,否则,对拆分后的值进行遍历,如果是字母或数字或下划线,则将flag设为true,继续遍历,
如果是特殊字符,同理,如果两者都不满足,则break。
var checkPassword = function (value,param) {
var pattern =/^[A-Za-z0-9_]$/; //字母或数字或下划线
var pattern_teshu=/^[!@#$%^&*()]$/; //特殊字符
var flag=false;
var s = value.split('');
if(s.length>param){
return flag;
}
for(var i=0;i<s.length;i++){
if (pattern.test(s[i])) {
flag = true;
}
else if (pattern_teshu.test(s[i])) {
flag = true;
}else{
flag = false;
break;
}
}
return flag;
}
HTML代码:
<tr>
<th style="text-align: right;">新密码:</th>
<td><input name="new_psw" validType="check[32]" id="new_psw" type="password" class="easyui-validatebox" data-options="required:true" style="width: 150px;"/></td>
</tr>
<tr>
<th style="text-align: right;">再次输入:</th>
<td><input name="confirm" id="confirm" type="password" class="easyui-validatebox" data-options="required:true" validType="equals['#new_psw']" /></td>
</tr>
事实上,easyui已经实现了以下规则:
email: 匹配email正则规则 .
url: 匹配URL正则规则 .
length[0,100]: 允许在x到x之间的字符数.
remote['http://.../action.do','paramName']: 发送ajax请求验证值,当成功之后返回'true'.
以下是几种常用的正则表达式:
/[^ -~]/ 中文/全角字符
/\s/ 空格
/^[\u4e00-\u9fa5_a-zA-Z0-9]+$/ 中文、字母或数字下划线
/^[A-Za-z0-9_]{1,10}$/ 1-10位的数字、字母或下划线