REGEX 正則表達(dá)式

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)輸入正確的郵箱");
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • TRY REGEX 是一個(gè)交互式的正則表達(dá)式學(xué)習(xí)項(xiàng)目項(xiàng)目地址:https://github.com/calluma...
    蘿卜粥_Carrot閱讀 588評(píng)論 0 0
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評(píng)論 19 139
  • 注:本篇文章只為方便查看,特此保留,如有冒犯,敬請(qǐng)諒解!?。?本文目標(biāo) 30分鐘內(nèi)讓你明白正則表達(dá)式是什么,并對(duì)它...
    阿杰Alex閱讀 1,557評(píng)論 0 10
  • 正則表達(dá)式到底是什么東西?字符是計(jì)算機(jī)軟件處理文字時(shí)最基本的單位,可能是字母,數(shù)字,標(biāo)點(diǎn)符號(hào),空格,換行符,漢字等...
    獅子挽歌閱讀 2,277評(píng)論 0 9
  • 推薦幾個(gè)正則表達(dá)式編輯器 Debuggex :https://www.debuggex.com/ PyRegex:...
    木易林1閱讀 11,845評(píng)論 9 151

友情鏈接更多精彩內(nèi)容