在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-Z\u4e00-\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
   

Java中判断某一字符串是否包含数字、字母和中文的更多相关文章

  1. java中判断两个字符串是否相等的问题

    我最近刚学java,今天编程的时候就遇到一个棘手的问题,就是关于判断两个字符串是否相等的问题.在编程中,通常比较两个字符串是否相同的表达式是“==”,但在java中不能这么写.在java中,用的是eq ...

  2. java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”

    在javascript中有一个方法isDigit()使用来判断一个字符串是否都是数字,在java的字符串处理方法中没有这样的方法,觉得常常需要用到,于是上网搜了一下,整理出了两个用正则表达式匹配的判断 ...

  3. Java 中字两个字符串判断是否相等(转载)

    java中判断字符串是否相等有两种方法:1.用"=="运算符,该运算符表示指向字符串的引用是否相同,比如: String a="abc";String b=&q ...

  4. (转载)java中判断字符串是否为数字的方法的几种方法

    java中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < ...

  5. JAVA中令人疑惑的字符串

    Java中不同的字符串存在于同一个存储池中,字符串变量将指向存储池中相应的位置,也就是字符串变量里面包含的并不是字符串而是这个字符串对象的内存地址. String a = "123" ...

  6. Java中XML格式的字符串4读取方式的简单比较

    Java中XML格式的字符串4读取方式的简单比较 1.java自带的DOM解析. import java.io.StringReader; import javax.xml.parsers.Docum ...

  7. 使用java中replaceAll方法替换字符串中的反斜杠

    今天在项目中使用java中replaceAll方法将字符串中的反斜杠("\")替换成空字符串(""),结果出现如下的异常: java.util.regex.Pa ...

  8. Java中各种集合(字符串类)的线程安全性!!!

    Java中各种集合(字符串类)的线程安全性!!! 一.概念: 线程安全:就是当多线程访问时,采用了加锁的机制:即当一个线程访问该类的某个数据时,会对这个数据进行保护,其他线程不能对其访问,直到该线程读 ...

  9. Java 中如何计算两个字符串时间之间的时间差?(单位为分钟)

    Java 中如何计算两个字符串时间之间的时间差?(单位为分钟) import java.text.DateFormat; import java.text.ParseException; import ...

  10. java中使用SimpleDateFormat实现字符串和日期的相互转换

    java中使用SimpleDateFormat实现字符串和日期的相互转换 import java.text.ParseException; import java.text.SimpleDateFor ...

随机推荐

  1. Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!

    在众多开源项目中,高颜值.功能强大且部署简单的项目往往更能俘获开发者的心.然而,实际部署 Web 应用时,面对数据库.缓存.消息队列等复杂的依赖关系,常常令人头疼.Docker 的开源为我们普及了容器 ...

  2. [Software Note ] Fibersim-export-OffsetedMesh

    输出Offseted 的Drape data 只在fibersim 导出界面打开Allow offset simulation 选项,输出的网格还是在layup surface 上: 输出的数据并未偏 ...

  3. pytest 框架使用规则

    使用pytest 注意 有时候常常会调用时文件未执行,就是没注意命名规范 如何调用-命令行调用 pytest 批量运行测试用例 单个用例调试成功后,接下来我们要进行所有脚本统一执行 我要执行testc ...

  4. 学习高可靠Redis分布式锁实现思路

    一.分布式锁的必要性 在单体应用时代,我们使用ReentrantLock或synchronized就能解决线程安全问题.但当系统拆分为分布式架构后(目前大多数公司应该不会只是单体应用了),跨进程的共享 ...

  5. 【ffmpeg】avformat_alloc_context报错System.NotSupportedException不支持所指定的方法

    这个错误报了第二次了,网上搜不到靠谱的解决方案,赶快记录一下. 第一个情况:报错如题目System.NotSupportedException 不支持所指定的方法 第二个情况:如果换autogen版本 ...

  6. 『Plotly实战指南』--柱状图绘制基础篇

    柱状图作为最基础的数据可视化形式之一,能直观展示不同类别数据的对比关系,适用于一下的场景: 比较不同类别之间的数据大小,如不同产品的销售额对比. 展示数据的分布情况,如各年龄段的人口数量分布. 分析时 ...

  7. directory 用于数据泵 导入、导出创建的目录。

    1.查询directory目录 select * from dba_directories; 2.创建或者修改 directory目录 create or replace directory 目录名称 ...

  8. 【Unity3D】把相机视角放置到编辑器当前位置视角

    [Unity3D]把相机视角放置到编辑器当前位置视角 零.问题 Unity开发过程中,经常要将相机调整值对应位置,但是通过数值来调有时候不怎么方便,有什么方法可以快速让相机的视角与编辑器当前视角同步呢 ...

  9. EntityFramework GroupJoin

    总而言之, GroupJoin 是先 Join 后 Group, 对应的 SQL 也是先 Join, 然后通过内置 LINQ 操作分组. 参考文档 GroupJoin 方法 Reimplementin ...

  10. k8s部署dify详细过程

    一.概述 dify官方提供的安装方式是docker-compose方式部署的,单机运行. 但是在企业生产环境,单机没法提供冗余,一旦故障,就很麻烦了. 如果有大量的APP用户,那么单机承受不住这么多并 ...