美文网首页
iOS之有趣的正则表达式(Objective-C)

iOS之有趣的正则表达式(Objective-C)

作者: Raywf | 来源:发表于2018-03-19 14:28 被阅读0次

2018.3.19

正则表达式在线测试
在线测试网站1
在线测试网站2

iOS 简单应用
创建一个NSString分类

//  NSString+RFCategory.h
#import <Foundation/Foundation.h>

@interface NSString (RFCategory)

///正则匹配判定
- (BOOL)rf_IsMatchRegEx:(NSString *)regEx;

@end

//  NSString+RFCategory.m
#import "NSString+RFCategory.h"

@implementation NSString (RFCategory)

- (BOOL)rf_IsMatchRegEx:(NSString *)regEx {
    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regEx];
    BOOL isMatch = [pred evaluateWithObject:self];
    return isMatch;
}

@end

正则表达式补充1

常用元字符
代码  说明
.   匹配除换行符以外的任意字符
\w  匹配字母或数字或下划线
\s  匹配任意的空白符
\d  匹配数字
\b  匹配单词的开始或结束
^   匹配字符串的开始
$   匹配字符串的结束

常用限定符
代码/语法   说明
*   重复零次或更多次
+   重复一次或更多次
?   重复零次或一次
{n} 重复n次
{n,}    重复n次或更多次
{n,m}   重复n到m次

常用反义词
代码/语法   说明
\W  匹配任意不是字母,数字,下划线,汉字的字符
\S  匹配任意不是空白符的字符
\D  匹配任意非数字的字符
\B  匹配不是单词开头或结束的位置
[^x]    匹配除了x以外的任意字符
[^aeiou]    匹配除了aeiou这几个字母以外的任意字符

正则表达式补充2

中文字符:[\u4e00-\u9fa5]    //ps.OC的语法要求为:[\\u4e00-\\u9fa5]
双字节字符:[^\x00-\xff]
空白行:\s
Email地址:\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}
网址URL:^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+
手机(国内):0?(13|14|15|17|18|19)[0-9]{9}
电话号码(国内):[0-9-()()]{7,18}
负浮点数:-([1-9]\d*.\d*|0.\d*[1-9]\d*)
匹配整数:-?[1-9]\d*
正浮点数:[1-9]\d*.\d*|0.\d*[1-9]\d*
腾讯QQ:[1-9]([0-9]{5,11})
邮政编码:\d{6}
IP:(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)
身份证:\d{17}[\d|x]|\d{15}
格式日期:\d{4}(\-|\/|.)\d{1,2}\1\d{1,2}
正整数:[1-9]\d*
负整数:-[1-9]\d*
用户名:[A-Za-z0-9_\-\u4e00-\u9fa5]+

正则表达式补充3

英文:[a-zA-Z'-]{1,100}
韩文:[\u3130-\u318f\uac00-\ud7a3]
日文:[\u0800-\u4e00]
中日韩:[\u3130-\u318f\uac00-\ud7a3\u2e80-\u9fff]
数字:[0-9]
任意字符:[\\s\\S]

其它补充参考.
[\uac00-\ud7a3]基本包括所有的韩文
匹配中文汉字日文韩文等多国语言的正则表达式
[\u2e80-\u9fff]包含了部分日文,故不可用来检测中文

相关文章

网友评论

      本文标题:iOS之有趣的正则表达式(Objective-C)

      本文链接:https://www.haomeiwen.com/subject/wukrqftx.html