• Java中判断某一字符串是否包含数字、字母和中文


         在Java中判断某一字符串是否为纯英文、纯数字、英文和数字的组合等时,通常使用正则str.matches匹配,告诉这个字符串是否与给定的正则表达式匹配。 
    1. 各种字符的unicode编码的范围:
    2. 汉字:[0x4e00,0x9fa5](或十进制[19968,40869])
    3. 数字:[0x30,0x39](或十进制[48, 57])
    4. 小写字母:[0x61,0x7a](或十进制[97, 122])
    5. 大写字母:[0x41,0x5a](或十进制[65, 90])
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class StrValidate {
    
        // 纯数字
        private static String DIGIT_REGEX = "[0-9]+";
        // 含有数字
        private static String CONTAIN_DIGIT_REGEX = ".*[0-9].*";
        // 纯字母
        private static String LETTER_REGEX = "[a-zA-Z]+";
        // 包含字母
        private static String CONTAIN_LETTER_REGEX = ".*[a-zA-z].*";
        // 纯中文
        private static String CHINESE_REGEX = "[u4e00-u9fa5]";
        // 仅仅包含字母和数字
        private static String LETTER_DIGIT_REGEX = "^[a-z0-9A-Z]+$";
        private static String CHINESE_LETTER_REGEX = "([u4e00-u9fa5]+|[a-zA-Z]+)";
        private static String CHINESE_LETTER_DIGIT_REGEX = "^[a-z0-9A-Zu4e00-u9fa5]+$";
    
        /**
         * 判断字符串是否仅含有数字和字母
         *
         * @param str
         * @return
         */
        public static boolean isLetterDigit(String str) {
            return str.matches(LETTER_DIGIT_REGEX);
        }
        /**
         * 是否为汉字,不包括标点符号
         *
         * @param con
         * @return true 是汉字
         */
        public static boolean isChinese(String con) {
            Pattern pattern = Pattern.compile(CHINESE_REGEX);
            for (int i = 0; i < con.length(); i = i + 1) {
                if (!pattern.matcher(
                        String.valueOf(con.charAt(i))).find()) {
                    return false;
                }
            }
            return true;
        }
        /**
         * 用正则表达式判断字符串中是否
         * 仅包含英文字母、数字和汉字
         *
         * @param str
         * @return
         */
        public static boolean isLetterDigitOrChinese(String str) {
            return str.matches(CHINESE_LETTER_DIGIT_REGEX);
        }
        /**
         * 姓名中可包含汉字和字母,无其它字符
         *
         * @param passengerName
         * @return
         */
        public static boolean checkChineseLetter(String passengerName) {
            Pattern pattern = Pattern.compile(CHINESE_LETTER_REGEX);
            Matcher matcher = pattern.matcher(passengerName);
            if (matcher.matches()) {
                //不包含特殊字符
                return true;
            } else {
                //包含了特殊字符
                return false;
            }
        }
        /**
         * 判断一个字符串是否包含标点符号(中文或者英文标点符号),true 包含。<br/>
         * 原理:对原字符串做一次清洗,清洗掉所有标点符号。<br/>
         * 此时,如果入参 ret 包含标点符号,那么清洗前后字符串长度不同,返回true;否则,长度相等,返回false。<br/>
         *
         * @param ret
         * @return true 包含中英文标点符号
         */
        public static boolean checkPunctuation(String ret) {
            boolean b = false;
            String tmp = ret;
    //        replaceAll里面的正则匹配可以清空字符串中的中英文标点符号,只保留数字、英文和中文。
            tmp = tmp.replaceAll("\p{P}", "");
            if (ret.length() != tmp.length()) {
                b = true;
            }
            return b;
        }
        public static boolean isDigit(String ret) {
            return ret.matches(DIGIT_REGEX);
        }
        public static boolean isLetter(String ret) {
            return ret.matches(LETTER_REGEX);
        }
        public static boolean hasDigit(String ret) {
            return ret.matches(CONTAIN_DIGIT_REGEX);
        }
        public static boolean hasLetter(String ret) {
            return ret.matches(CONTAIN_LETTER_REGEX);
        }
        public static void main(String[] args) {
    //        System.out.println(isLetterDigitOrChinese("33dd33") + " ------- 麦迪娜·买买提 ---------");
    //        System.out.println(isChinese("麦迪娜·买买提"));
    //        System.out.println(isChinese("这个X") + " checkChineseLetter ");
    //        System.out.println(isChinese("checkChineseLetter"));
    //        System.out.println(isChinese("checkChineseLetter3"));
    
            System.out.println(hasDigit("99999"));
            System.out.println(hasDigit("9999舅舅9"));
        }
    }
     
         Reference
     
     
     
     
     
  • 相关阅读:
    nginx添加location跳转后不生效
    UniApp微信小程序授权获取用户当前位置信息
    VS创建Core项目体验跨平台,部署在docker上运行(启用docker支持)
    在Unity中渲染一个黑洞
    一个简简单单的红点系统框架
    十一、Abp vNext 基础篇丨测试
    Abp vNext 番外篇-疑难杂症丨浅谈扩展属性与多用户设计
    十、Abp vNext 基础篇丨权限
    九、Abp vNext 基础篇丨评论聚合功能
    Abp vNext 番外篇-疑难杂症丨nginx反向代理-部署
  • 原文地址:https://www.cnblogs.com/east7/p/12215829.html
Copyright © 2020-2023  润新知