前言
本文内容观摩的是其他作者的代码,在基础上增加修改了一些。
参考原文地址:java用正则表达式
提示:以下是本篇文章正文内容,下面案例可供参考
一、正则基础语法
字符 | 描述 |
---|---|
^ | 匹配输入字符串的【开始】位置。(要匹配 ^ 字符本身,请使用 [^]) |
$ | 匹配输入字符串的【结尾】位置 |
* | 匹配前面的子表达式【零次】或【多次】。 |
+ | 匹配前面的子表达式【一次】或【多次】。 |
? | 匹配前面的子表达式【零次】或【一次】。(等价于 {0,1}) |
{n,m} | 匹配前面的子表达式出现【最少n次】,【最多m次】。 |
- | - |
. | 任意字符 |
[0-9] | 匹配数字0-9 |
[a-zA-Z] | 匹配字母 |
[a-zA-Z0-9] | 匹配字母或数字 |
[\u4e00-\u9fa5] | 匹配中文 |
- | - |
(cat竖线dog) | 匹配cat或dog |
二、正则工具类
直接上代码
package com.zdsoft.datafactory.common;
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-\u9fa5a-zA-Z-z]+";
private static String CHINESE_LETTER_DIGIT_REGEX = "^[a-z0-9A-Z\u4e00-\u9fa5]+$";
private static String CHINESE_LETTER_Num_REGEX = "^[\u4e00-\u9fa5a-zA-Z-z0-9_]+";
private static String eng = "^[a-zA-Z][a-zA-Z0-9_]*$";
private static String noSpace = "\\s*";
// JDBC:url校验
private static String JDBC_REGEX = "^jdbc:mysql://[0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}:[0-9]{1,5}[/][a-zA-Z-z0-9_]{1,63}";
/**
* 验证数据库连接信息URL
* @param passengerName
* @return
*/
public static boolean checkDatabaseUrls(String passengerName) {
Pattern pattern = Pattern.compile(JDBC_REGEX);
Matcher matcher = pattern.matcher(passengerName);
if (matcher.matches()) {
//符合
return true;
} else {
//不符合
return false;
}
}
/**
* 判断字符串是否仅含有数字和字母
* @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;
}
}
/**
* 可包含汉字、字母、数字、下划线,无其它字符
* @param passengerName
* @return
*/
public static boolean checkChineseLetterAndNum(String passengerName) {
Pattern pattern = Pattern.compile(CHINESE_LETTER_Num_REGEX);
Matcher matcher = pattern.matcher(passengerName);
if (matcher.matches()) {
//不包含特殊字符
return true;
} else {
//包含了特殊字符
return false;
}
}
/**
* 可包含字母、数字、下划线,无其它字符
* @param passengerName
* @return
*/
public static boolean checkEngLetter(String passengerName) {
Pattern pattern = Pattern.compile(eng);
Matcher matcher = pattern.matcher(passengerName);
if (matcher.matches()) {
//不包含特殊字符
return true;
} else {
//包含了特殊字符
return false;
}
}
/**
* 空格检验
* @param passengerName
* @return
*/
public static boolean checkSpace(String passengerName) {
Pattern pattern = Pattern.compile(noSpace);
Matcher matcher = pattern.matcher(passengerName);
if (matcher.matches()) {
//不包含特殊字符
return true;
} else {
//包含了特殊字符
return false;
}
}
}
总结
冲。