注:如有错误请指正
常用正则表达式
1使用
正则表达式功能:匹配(macth),查找(find)和替换(replace)
tihuanStr:返回的,regularStr:正则String,str:要被替换的String,replaceStr:替换的String
1.1android与java
- 匹配
boolean status=Pattern.matches(regularStr, str);
- 查找
(?=) 向前查找,(?!) 负向前查找,(?<=) 向后查找,(?<!) 负向后查找
String tihuanStr="";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
if(m.find()){
tihuanStr=m.group();
}else{
tihuanStr="";
}
- 替换
分为(前3个数字)中间4个数字(最后4个数字)替换为(第一组数值,保持不变$1)(中间为*)(第二组数值,保持不变$2)
String tihuanStr=phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
1.2go
Go语言中使用正则校验需要用到regexp
包
- 匹配
bool status=regexp.MatchString(regularStr,str)
1.3C#
- 匹配
boolean result = Regex.IsMatch(str, regularStr);
- 查找
Regex r = new Regex("abc"); // 定义一个Regex对象实例
Match m = r.Match("123abc456"); // 在字符串中匹配
if (m.Success){
Console.WriteLine("Found match at position " + m.Index); //输入匹配字符的位置
}
- 替换
string tihuanStr=Regex.Replace(str, regularStr, replaceStr);
1.4iOS
- 匹配
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regularStr];
BOOL result = [predicate evaluateWithObject:str];
- 查找
NSRange range = [str rangeOfString:regularStr options:NSRegularExpressionSearch];
if (range.location != NSNotFound) {
// 找到
NSLog(@"%@",NSStringFromRange(range));
}else{
//未找到
}
- 替换
2常用
2.1匹配IP地址
(简单匹配,格式,如:192.168.1.1,127.0.0.1,没有匹配IP段的大小)
[1-9](\d{1,2})?\.(0|([1-9](\d{1,2})?))\.(0|([1-9](\d{1,2})?))\.(0|([1-9](\d{1,2})?))
2.2匹配中国邮政编码
[1-9]\d{5}
2.3验证URL地址
格式:http://blog.csdn.net或 http://www.csdn.net:80
(https?://(w{3}\.)?)?\w+\.\w+(\.[a-zA-Z]+)*(:\d{1,5})?(/\w*)*(\??(.+=.*)?(&.+=.*)?)?
2.4验证日期(年月日)
日期,格式:1992-09-03,或1992.09.03,或1992/09/03
[1-9]{4}([-./])\d{1,2}\1\d{1,2}
2.5验证中文
(简单匹配,格式,如:192.168.1.1,127.0.0.1,没有匹配IP段的大小)
^[\u4E00-\u9FA5]+$
2.6验证空白字符
空白字符,包括:空格、\t、\n、\r、\f、\x0B
\s+
2.7验证整数和浮点数(正负整数和正负浮点数)
一位或多位0-9之间的浮点数,如:1.23,233.30
\-?[0-9]+(\.[0-9]{1,2})?$
2.8验证整数(正整数和负整数)
一位或多位0-9之间的整数
\-?[0-9]+(\d+)?
2.9验证Email
email地址,格式:zycker@qq.com,zycker@xxx.com.cn,xxx代表邮件服务商
\w+@\w+\.[a-z]+(\.[a-z]+)?
2.10验证固定电话号码
电话号码,格式:
国家(地区)电话代码 + 区号(城市代码) + 电话号码,如:+8602085588447
国家(地区) 代码 :标识电话号码的国家(地区)的标准国家(地区)代码。它包含从 0 到 9 的一位或多位数字,数字之后是空格分隔的国家(地区)代码。
区号(城市代码):这可能包含一个或多个从 0 到 9 的数字,地区或城市代码放在圆括号——对不使用地区或城市代码的国家(地区),则省略该组件。
电话号码:这包含从 0 到 9 的一个或多个数字
(\+\d+)?(\d{3,4}\-?)?\d{7,8}$
2.11验证手机号码
(支持国际格式,+86135xxxx…(中国内地),+00852137xxxx…(中国香港))
移动、联通、电信运营商的号码段
移动的号段:134(0-8)、135、136、137、138、139、147(预计用于TD上网卡) 、150、151、152、157(TD专用)、158、159、187(未启用)、188(TD专用)
联通的号段:130、131、132、155、156(世界风专用)、185(未启用)、186(3g)
电信的号段:133、153、180(未启用)、189
(\+\d+)?1[3458]\d{9}$
2.12验证身份证号码
居民身份证号码15位或18位,最后一位可能是数字或字母
[1-9]\d{13,16}[a-zA-Z0-9]{1}
2.13是否为车牌号
^[\u4e00-\u9fa5]{1}[a-zA-Z]{1}[a-zA-Z_0-9]{5}$
2.14匹配是否为整数或不超过两位的正负浮点数
\-?[1-9]+(\.[0-9]{1,2})?$