Java中判断某一字符串是否包含数字、字母和中文
- 各种字符的unicode编码的范围:
- 汉字:[0x4e00,0x9fa5](或十进制[19968,40869])
- 数字:[0x30,0x39](或十进制[48, 57])
- 小写字母:[0x61,0x7a](或十进制[97, 122])
- 大写字母:[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"));
}
}
Java中判断某一字符串是否包含数字、字母和中文的更多相关文章
- java中判断两个字符串是否相等的问题
我最近刚学java,今天编程的时候就遇到一个棘手的问题,就是关于判断两个字符串是否相等的问题.在编程中,通常比较两个字符串是否相同的表达式是“==”,但在java中不能这么写.在java中,用的是eq ...
- java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”
在javascript中有一个方法isDigit()使用来判断一个字符串是否都是数字,在java的字符串处理方法中没有这样的方法,觉得常常需要用到,于是上网搜了一下,整理出了两个用正则表达式匹配的判断 ...
- Java 中字两个字符串判断是否相等(转载)
java中判断字符串是否相等有两种方法:1.用"=="运算符,该运算符表示指向字符串的引用是否相同,比如: String a="abc";String b=&q ...
- (转载)java中判断字符串是否为数字的方法的几种方法
java中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < ...
- JAVA中令人疑惑的字符串
Java中不同的字符串存在于同一个存储池中,字符串变量将指向存储池中相应的位置,也就是字符串变量里面包含的并不是字符串而是这个字符串对象的内存地址. String a = "123" ...
- Java中XML格式的字符串4读取方式的简单比较
Java中XML格式的字符串4读取方式的简单比较 1.java自带的DOM解析. import java.io.StringReader; import javax.xml.parsers.Docum ...
- 使用java中replaceAll方法替换字符串中的反斜杠
今天在项目中使用java中replaceAll方法将字符串中的反斜杠("\")替换成空字符串(""),结果出现如下的异常: java.util.regex.Pa ...
- Java中各种集合(字符串类)的线程安全性!!!
Java中各种集合(字符串类)的线程安全性!!! 一.概念: 线程安全:就是当多线程访问时,采用了加锁的机制:即当一个线程访问该类的某个数据时,会对这个数据进行保护,其他线程不能对其访问,直到该线程读 ...
- Java 中如何计算两个字符串时间之间的时间差?(单位为分钟)
Java 中如何计算两个字符串时间之间的时间差?(单位为分钟) import java.text.DateFormat; import java.text.ParseException; import ...
- java中使用SimpleDateFormat实现字符串和日期的相互转换
java中使用SimpleDateFormat实现字符串和日期的相互转换 import java.text.ParseException; import java.text.SimpleDateFor ...
随机推荐
- buuctf-web 解题过程
[SUCTF 2019]Upload Labs 2 源码 // admin.php <?php include 'config.php'; class Ad{ public $cmd; publ ...
- 后台返回文件URL,前端下载文件,即使设置文件名,下载的文件名称并不是自己所设置的问题
1.背景 项目中遇到这么一个问题,上传文件后,后台返回的是一个URL,前端需要通过点击下载这个文件 2.首次处理 当时一看是下载文件,觉得很简单,无非是通过创建a标签来实现,以下是我当时的代码,用的是 ...
- 程序员必看 Linux 常用命令(重要)
文件操作命令 find find 用于在指定目录下查找文件或子目录,如果不指定查找目录,则在当前目录下查找 命令格式:find path -option [-print] [ -exec/-ok co ...
- Django实战项目-学习任务系统-查询列表分页显示
接着上期代码框架,6个主要功能基本实现,剩下的就是细节点的完善优化了. 接着优化查询列表分页显示功能,有很多菜单功能都有查询列表显示页面情况,如果数据量多,不分页显示的话,页面展示效果就不太好. 本次 ...
- nginx + lua脚本
Nginx配合Lua 案例 今天实现一个非常简单的例子. 云服务器上部署的了一个很通用的应用程序(它没有保护策略),其端口是a,但是我想使用他,就要通过公网ip:端口去访问它.暴露在外面很不安全. 那 ...
- Windows下安装使用OpenLDAP
LDAP:(轻量级目录访问协议,Lightweight Directory Access Protocol)它是基于 X.500标准的,但是简单多了并且可以根据需要定制.与X.500不同,LDAP支持 ...
- Anaconda指定目录安装终极指南+避坑大全
最近被Python环境搞疯了吧?一个项目跑起来另一个就报错?用Conda环境隔离大法就对了!但默认安装竟吃掉根分区8G的硬盘?今天手把手教你迁移安装目录+实战部署AI项目. 今天测试AIREPORT, ...
- 支持VS2022的包发布工具NuPack 2022发布
我们很高兴地宣布 NuPack 2022 正式发布!这是一个开源项目,旨在简化 .NET 开发中的 NuGet 包发布流程. NuPack 是什么? NuPack 是一个轻量级工具,VS扩展,它可以帮 ...
- Python+硅基流动API实现小说转有声读物
一.注册硅基流动账号获取文本转语音api 1.注册登录硅基流动 注册.登录硅基流动 查看apikey 查看赠送的免费额度 点击文档中心 2.查看文本转语音api 查看文本转语音api 查看api使用指 ...
- Javascript try catch finally
很少用到javascript的异常捕获,突然需要,发现挺全的,小小记录下,留爪. 直接打码: //public.js //异常输出 function exception(ex) { console.l ...