iOS中系统自带正则表达式的应用以及一些常用的正则表达式

来源:互联网 发布:客户管理crm软件 编辑:程序博客网 时间:2024/06/11 13:12
正则表达式在用户注册和登录中应用很广,通过正则表达式可以判断用户输入的数据正确与否。在iOS4.0以前开发者一般是通过谓词(NSPredicate)和加入正则表达式的第三方库(如:RegexKitLite)来实现。其实从iOS4.0开始系统已经原生支持了正则表达式的使用,系统通过自有类NSRegularExpression和NSTextCheckingResult来实现正则表达式的创建和筛选。
结合一个例子来说明具体的实现:
//组装一个字符串,把里面的网址解析出来NSString *urlString = @"sfdshttp://www.baidu.com";NSError *error;//http+:[^\\s]* 这是检测网址的正则表达式NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"http+:[^\\s]*" options:0 error:&error];if (regex != nil) { NSTextCheckingResult *firstMatch = [regex firstMatchInString:urlString options:0 range:NSMakeRange(0, [urlString length])];  if (firstMatch) {    NSRange resultRange = [firstMatch rangeAtIndex:0];    //从urlString中截取数据    NSString *result = [urlString substringWithRange:resultRange];    NSLog(@"%@",result);  }}
输出结果为:http://www.baidu.com
可见通过iOS自带的正则表达式的类可以达到过滤和筛选字符串的功能
常用的正则表达式:
匹配Email地址的正则表达式:\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匹配国内电话号码:\\d{3}-\\d{8}|\\d{4}-\\d{7}
匹配腾讯QQ号:[1-9][0-9]{4,}
匹配中国邮政编码:[1-9]\\d{5}(?!\\d)
匹配身份证:\\d{15}|\\d{18} 注:15位或者18位
匹配ip地址:\\d+\\.\\d+\\.\\d+\\.\\d+
匹配特定数字:
^[1-9]\d*$    //匹配正整数
^-[1-9]\d*$   //匹配负整数
^-?[1-9]\d*$   //匹配整数
^[1-9]\d*|0$  //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$   //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正

匹配特定字符串:
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串
评注:最基本也是最常用的一些表达式
0 0
原创粉丝点击