package coolbuy360.service;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import android.content.Context;
public class Validator {
Boolean isValidator=false;
String message="";
String check=null;
Context ctx;
private static Validator validator;
/**
* 私有构造函数,保证单例模式
* @param context
*/
private Validator(Context context)
{
this.ctx=context;
}
/**
* 获取单例对象
* @param context
* @return
*/
public static Validator getValidatorInstance(Context context)
{
if(validator==null)
{
validator=new Validator(context);
}
return validator;
}
//内容验证
/**
* 验证是否为相应的字符串(内容合格, 数字,字母,下划线)
* @param contentStr
* 需要验证的字符串
* @param message
* 验证不成功后的错误信息
*
* @return
* 返回自身对象
*/
public Validator CheckContent(String contentStr,String message){
char tempName[]=contentStr.toCharArray();
Validator vallidator=Validator.getValidatorInstance(ctx);
//验证内容
for(int i=0;i<tempName.length;i++){
if((tempName[i]>47 && tempName[i]<58) || (tempName[i]>64 && tempName[i]<91) || (tempName[i]>96 && tempName[i]<123) || (tempName[i]==95)){
vallidator.message="ok";
vallidator.isValidator=true;
//内容合格, 数字,字母,下划线
}else{
vallidator.message=message;
vallidator.isValidator=false;
}
}
return vallidator;
}
/**
* 根据正则表达式来验证是否相应的串
* @param contentStr
* 需要验证的字符串
* @param reg
* 正则表达式
* @param message
* 验证不成功后的错误信息
* @return
*/
public Validator CheckContentByReg(String contentStr, String reg ,String message){
//char tempName[]=names.toCharArray();
Validator vallidator=Validator.getValidatorInstance(ctx);
if(contentStr.matches(reg))
{
vallidator.isValidator=true;
}
else
{
vallidator.message="message";
vallidator.isValidator=true;
}
return vallidator;
}
/**
* 验证字符串的长度
* @param contentStr
* 需要验证的字符串
* @param min
* 最小长度
* @param max
* 最大长度
* @param message
* 验证不成功后的错误信息
* @return
*/
public Boolean contentLengthCheck(String contentStr,int min ,int max){
char tempName[]=contentStr.toCharArray();
boolean islong=false;
Validator vallidator=Validator.getValidatorInstance(ctx);
if(tempName.length>=min && tempName.length<=max){
islong=true;
}else{
islong=false;
}
return islong;
}
/**
*判断字符串是否为允许范围的字符串
*允许的字符串为:字母,数字,下划线
*/
public boolean isContent(String content) {
Pattern p = Pattern
.compile("^[a-zA-Z][a-zA-Z0-9]*$");
Matcher m = p.matcher(content);
return m.matches();
}
//判断手机格式是否正确
public boolean isMobileNO(String mobiles) {
Pattern p = Pattern
.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");
Matcher m = p.matcher(mobiles);
return m.matches();
}
//判断电话号码格式是否正确
public boolean isTelephone(String mobiles) {
Pattern p = Pattern
.compile("^(0[0-9]{2,3}\\-)([0-9]{7,8})(\\-[0-9]{1,4})?$");
Matcher m = p.matcher(mobiles);
return m.matches();
}
//判断email格式是否正确
public boolean isEmail(String email) {
String str = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
Pattern p = Pattern.compile(str);
Matcher m = p.matcher(email);
return m.matches();
}
//判断是否全是数字
public boolean isNumeric(String str) {
Pattern pattern = Pattern.compile("[0-9]*");
Matcher isNum = pattern.matcher(str);
if (!isNum.matches()) {
return false;
}
return true;
}
/**
* 18位或者15位身份证验证 18位的最后一位可以是字母x
*
* @param text
* @return
*/
public boolean isIDCardNum(String str)
{
//String regx = "[0-9]{17}x";
//String reg1 = "[0-9]{15}";
//String regex = "[0-9]{18}";
Pattern p = Pattern.compile("[0-9]{17}x|[0-9]{15}|[0-9]{18}");
Matcher m = p.matcher(str);
if(!m.matches())
{
return false;
}
else
{
return true;
}
}
//判断是否是ip
public boolean isIP(String str) {
Pattern pattern = Pattern.compile("\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b");
Matcher isNum = pattern.matcher(str);
if (!isNum.matches()) {
return false;
}
return true;
}
//验证是否是网址
public boolean isUrl(String str)
{
String regStr= "^((https|http|ftp|rtsp|mms)?://)"
+ "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" //ftp的user@
+ "(([0-9]{1,3}\\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184
+ "|" // 允许IP和DOMAIN(域名)
+ "([0-9a-z_!~*'()-]+\\.)*" // 域名- www.
+ "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\\." // 二级域名
+ "[a-z]{2,6})" // first level domain- .com or .museum
+ "(:[0-9]{1,4})?" // 端口- :80
+ "((/?)|" // a slash isn't required if there is no file name
+ "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
Pattern pattern = Pattern.compile(regStr);
Matcher isurl = pattern.matcher(str);
if (!isurl.matches()) {
return false;
}
return true;
}
}