regex 正則表達(dá)式
首先貼出兩個(gè)網(wǎng)址:
第一個(gè)《正則表達(dá)式30分鐘入門(mén)教程》
http://deerchao.net/tutorials/regex/regex.htm
第二個(gè) 在線(xiàn)正則測(cè)試網(wǎng)站
http://tool.oschina.net/regex/
what is regex?
正則表達(dá)式就是 字符串規(guī)則
使用正則表達(dá)式,就是
1.為了找到符合規(guī)則的字符串,例如爬蟲(chóng)中的應(yīng)用;
2.為了驗(yàn)證字符串是否符合規(guī)則,例如用戶(hù)表單校驗(yàn)。
base Content
^匹配你要用來(lái)查找的字符串的開(kāi)頭,$匹配結(jié)尾。
javascript 中使用要使用 // 對(duì)表達(dá)式進(jìn)行包裹,java 中直接使用即可。
javascript 使用例子:
/^[a-zA-Z0-9]{6,20}$/
project example
以下內(nèi)容為自己項(xiàng)目中使用過(guò)的正則表達(dá)式
java中應(yīng)用
/**
*
* @Description:手機(jī)號(hào)碼校驗(yàn)
* @author:
* @time:2016年12月14日 下午12:41:41
*/
public static boolean telephoneNumCheck(String telephoneNum) {
Pattern p = Pattern
.compile("^(((13[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\\d{8})$");
Matcher m = p.matcher(telephoneNum);
return m.matches();
}
/**
*
* @Description:身份證號(hào)碼校驗(yàn)
* @author:
* @time:2016年12月14日 下午12:43:05
*/
public static boolean idCardNumCheck(String idCardNum) {
Pattern p = Pattern
.compile("^(^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$)|(^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])((\\d{4})|\\d{3}[Xx])$)$");
Matcher m = p.matcher(idCardNum);
if (m.matches()) {
if (idCardNum.length() == 18) {
Integer[] idCardWi = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10,
5, 8, 4, 2 };
// 這是除以11后,可能產(chǎn)生的11位余數(shù)、驗(yàn)證碼,也保存成數(shù)組
Integer[] idCardY = { 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 };
// 用來(lái)保存前17位各自乖以加權(quán)因子后的總和
Integer idCardWiSum = 0;
for (int i = 0; i < 17; i++) {
idCardWiSum += Integer.parseInt(idCardNum.substring(i,
i + 1)) * idCardWi[i];
}
int idCardMod = idCardWiSum % 11;// 計(jì)算出校驗(yàn)碼所在數(shù)組的位置
String idCardLast = idCardNum.substring(17);// 得到最后一位身份證號(hào)碼
if (idCardMod == 2) {
if ("X".equals(idCardLast) || "x".equals(idCardLast)) {
return true;
} else {
return false;
}
} else {
// 用計(jì)算出的驗(yàn)證碼與最后一位身份證號(hào)碼匹配,如果一致,說(shuō)明通過(guò),否則是無(wú)效的身份證號(hào)碼
if (Integer.parseInt(idCardLast) == idCardY[idCardMod]) {
return true;
} else {
return false;
}
}
}else{
return true;
}
} else {
return false;
}
}
/**
*
* @Description:郵編校驗(yàn)
* @author:
* @time:2016年12月14日 下午2:01:21
*/
public static boolean zipCodeCheck(String zipCode) {
Pattern p = Pattern.compile("^[1-9]\\d{5}$");
Matcher m = p.matcher(zipCode);
return m.matches();
}
/**
*
* @Description:身份證姓名校驗(yàn)
* @author:
* @time:2016年12月14日 下午2:23:49
*/
public static boolean nameCheck(String name) {
Pattern p = Pattern
.compile("[\\u4E00-\\u9FA5]{2,5}(?:·[\\u4E00-\\u9FA5]{2,5})*");
Matcher m = p.matcher(name);
return m.matches();
}
/**
* 過(guò)濾特殊字符
* @param str
* @return
*/
public static String specialCharacterFilter(String str){
String regEx = "[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
return m.replaceAll("").trim();
}
javascript 應(yīng)用
/**校驗(yàn)手機(jī)號(hào)*/
$.validator.addMethod("mobilePhone",function(value){
var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
if(myreg.test(value)){
return true;
}else {
return false;
}
},"請(qǐng)輸入正確的手機(jī)號(hào)碼");
/**校驗(yàn)長(zhǎng)度*/
$.validator.addMethod("checkNameLen", function(value) {
if(/^[\u4e00-\u9fa5a-zA-Z0-9]{2,20}$/.test(value)) {
return true;
}
return false;
}, "請(qǐng)輸入2-20個(gè)漢字或2-20位字符,不包含特殊字符");
/**校驗(yàn)長(zhǎng)度*/
$.validator.addMethod("checkUnameLen", function(value) {
if(/^[a-zA-Z0-9]{6,20}$/.test(value)){
return true;
}
return false;
}, "請(qǐng)輸入6-20位字符,不包含漢字及特殊字符");
/**密碼校驗(yàn)**/
$.validator.addMethod("checkPassword", function(value) {
if(/^[a-zA-Z0-9_]{6,20}$/.test(value)){
return true;
}
return false;
}, "請(qǐng)輸入6-20位數(shù)字、字母或下劃線(xiàn)");
/**
* 校驗(yàn)全局唯一用戶(hù)名
*/
$.validator.addMethod("primaryUname", function(value, element) {
var succ = false;
if($("#customerId").val()!=""){
succ = true;
}
var username=$("#uname").val();
if(username == value){
succ=true
}else{
$.ajax({
type : "POST",
url : unameCkeckPath,
data : {nickName : value},
async : false,
success : function(msg) {
if (msg == "succ") {
succ = true
}
}
});}
return succ;
}, "賬戶(hù)名已存在");
$.validator.addMethod("pwdEqUname", function(value) {
var username = $("#userName").val();
if (value != username) {
return true;
} else {
return false;
}
}, "密碼不能和用戶(hù)名一樣");
//檢查第二次輸入密碼是否與上面的一樣
$.validator.addMethod("repassEqual", function(value) {
var pwd1 = $("#loginPassword").val();
var pwd2 = value;
if (pwd1==pwd2) {
return true;
} else {
return false;
}
}, "兩次輸入密碼不一樣");
// 檢查郵箱,為空不檢查
$.validator.addMethod("email", function(value) {
var isNul = false;
if(!value){isNul = true}
return isNul || /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value);
}, "請(qǐng)輸入正確的郵箱");