概述
1 正则表达式解析json数据
public class RegularExpression {
public static void main() {
//
String json = "{name:"guan",age:18}";
String json = "{name:"guan1",age:18,obj:{name:"guan2"}}";
//name:"guan"
//age:18
//
将下一个字符标记为一个特殊字符
//+
匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。
//*
匹配前面的子表达式零次或多次。
//w
匹配包括下划线的任何单词字符。
//d
匹配一个数字字符。等价于[0-9]。
//( ) 标记一个子表达式的开始和结束位置。
//^
匹配输入字符串的开始位置。
//$
匹配输入字符串的结束位置。
//x|y 匹配 x 或 y。
//S
匹配任何非空白字符。
//"\w+"
字符串属性{
//
Pattern p = Pattern.compile("\w+:("\w+"|\d*)");
Pattern p = Pattern.compile("\w+:("\w+"|\d*|\{\S+\})");
Matcher m = p.matcher(json);
while(m.find()){
String text = m.group();
int dotPos= text.indexOf(":");
String key = text.substring(0, dotPos);
String value = text.substring(dotPos+1, text.length());
//替换字符串的开始、结束的双引号
^"|"$ == ^\"|\"$
value = value.replaceAll("^"|"$", "");
Log.e("Task", key);
Log.e("Task", value);
}
}
//测试结果
//
E/Task: name
//
E/Task: guan1
//
E/Task: age
//
E/Task: 18
//
E/Task: obj
//
E/Task: name
//
E/Task: guan2
}
2 手机号正则表达式
(1) 手机号开头集合
176,177,178,
180,181,182,183,184,185,186,187,188。,189。
145,147
130,131,132,133,134,135,136,137, 138,139
150,151, 152,153,155,156,157,158,159,
(2) 正则表达式
/**
* 验证手机号码是否合法
*/
public static boolean validatePhoneNumber(String mobiles) {
String telRegex = "^((13[0-9])|(15[^4])|(18[0-9])|(17[0-8])|(147,145))\d{8}$";
return !TextUtils.isEmpty(mobiles) && mobiles.matches(telRegex);
}
3 身份证号码正则表达式
/**
* 验证身份证号码是否合法
*/
public static boolean validateIDCardNumber(String number) {
return (number.length() == 15 && number.matches("^\d{15}"))
|| (number.length() == 18 && (number.matches("^\d{17}[x,X,\d]")));
}
4 正则表达式匹配URL
(1) 判断是否是完整的域名
public static boolean isCompleteUrl(String text) {
Pattern p = Pattern.compile("((http|ftp|https)://)(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,4})*(/[a-zA-Z0-9\&%_\./-~-]*)?", Pattern.CASE_INSENSITIVE);
Matcher matcher = p.matcher(text);
return matcher.find();
}
(2)判断是否是缺少前缀的域名
/**
* 是否是缺少前缀的域名
*/
public static boolean isHalfCompleteUrl(String text) {
Pattern p = Pattern.compile("(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,4})*(/[a-zA-Z0-9\&%_\./-~-]*)?", Pattern.CASE_INSENSITIVE);
Matcher matcher = p.matcher(text);
return matcher.find();
}
5 其他的正则表达式
/**
* 验证工具类
*/
public class ValidateUtil {
private static final int PASS_LOW_LIMIT = 6;
private static final int PASS_HIGH_LIMIT = 16;
/**
* 验证手机号码是否合法
*/
public static boolean validatePhoneNumber(String mobiles) {
String telRegex = "^((13[0-9])|(15[^4])|(18[0-9])|(17[0-8])|(147,145))\d{8}$";
return !TextUtils.isEmpty(mobiles) && mobiles.matches(telRegex);
}
/**
* 验证密码是否合法 6-16位
*/
public static boolean validatePass(String password) {
return password.length() >= PASS_LOW_LIMIT && password.length() <= PASS_HIGH_LIMIT;
}
/**
* 验证身份证号码是否合法
*/
public static boolean validateIDCardNumber(String number) {
return (number.length() == 15 && number.matches("^\d{15}"))
|| (number.length() == 18 && (number.matches("^\d{17}[x,X,\d]")));
}
/**
* 判断是不是英文字母
*/
public static boolean isECharacter(String codePoint) {
return codePoint.matches("^[A-Za-z]$");
}
}
最后
以上就是爱撒娇微笑为你收集整理的Android基础之最新正则表达式的全部内容,希望文章能够帮你解决Android基础之最新正则表达式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复