import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 常用的正则表达式
*
*/
public class RegexUtils {
/**
* IP
*/
public final static String IP="^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\." + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\." + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\." + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$";
/**
* 邮箱
*/
public final static String EMAIL="\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
/**
* 数字
*/
public final static String NUMBER="^[0-9]*$";
/**
* 判断是否是正确的IP地址
* @param ip
* @return boolean true,通过,false,没通过
*/
public static boolean isIp(String ip) {
if (null == ip || "".equals(ip))
return false;
return ip.matches(IP);
}
/**
* 判断是否是正确的邮箱地址
*
* @param email
* @return boolean true,通过,false,没通过
*/
public static boolean isEmail(String email) {
if (null == email || "".equals(email))
return false;
return email.matches(EMAIL);
}
/**
* 判断是否正整数
*
* @param number
* 数字
* @return boolean true,通过,false,没通过
*/
public static boolean isNumber(String number) {
if (null == number || "".equals(number))
return false;
return number.matches(NUMBER);
}
/**
* 判断几位小数(正数)
*
* @param decimal
* 数字
* @param count
* 小数位数
* @return boolean true,通过,false,没通过
*/
public static boolean isDecimal(String decimal, int count) {
if (null == decimal || "".equals(decimal))
return false;
String regex = "^(-)?(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){" + count + "})?$";
return decimal.matches(regex);
}
/**
* 判断是否是手机号码
*
* @param phoneNumber
* 手机号码
* @return boolean true,通过,false,没通过
*/
public static boolean isPhoneNumber(String phoneNumber) {
if (null == phoneNumber || "".equals(phoneNumber))
return false;
String regex = "^1[3|4|5|8][0-9]\\d{8}$";
return phoneNumber.matches(regex);
}
/**
* 判断是否含有特殊字符
*
* @param text
* @return boolean true,通过,false,没通过
*/
public static boolean hasSpecialChar(String text) {
if (null == text || "".equals(text))
return true;
if (text.replaceAll("[a-z]*[A-Z]*\\d*-*_*\\s*", "").length() == 0) {
// 如果不包含特殊字符
return false;
}
return true;
}
/**
* 适应CJK(中日韩)字符集,部分中日韩的字是一样的
*/
public static boolean isChinese2(String strName) {
char[] ch = strName.toCharArray();
for (int i = 0; i < ch.length; i++) {
char c = ch[i];
if (isChinese(c)) {
return true;
}
}
return false;
}
/**
* 内部方法,不可直接调用
* @param c
* @return
*/
private static boolean isChinese(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {
return true;
}
return false;
}
/**
* 验证是否是用户名
* 以字母开头,4-20位
* @param userName
* @return true 是 false 不是
*/
public static boolean isUserName(String userName){
Pattern p = Pattern.compile("^[a-zA-Z]+([a-zA-Z0-9]|[_]){2,20}$");
Matcher m = p.matcher(userName);
return m.matches();
}
/**
* 验证是否是手机验证码
* 6位数字
* @param password
* @return
*/
public static boolean isPhoneProving(String phoneProving){
Pattern p = Pattern.compile("^[0-9]{6}$");
Matcher m = p.matcher(phoneProving);
return m.matches();
}
/**
* 验证字符串是否是IMEI
* @param str
* @return
*/
public static boolean isIMEI(String str){
Pattern p = Pattern.compile("^[0-9]{15}$");
Matcher m = p.matcher(str);
return m.matches();
}
public static void main(String[] args) {
System.out.println(isDecimal("-0.2", 2));
}
}