ios开发正则表达式,正则表达式的实现原理

iOS常用正则表达式

好久没有更新了,发现好多简友还在不停的关注,感觉很对不起大家。现在对这篇正则进行下更新,修正下不对的地方。感谢大家的支持!

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、成都做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的梨林网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

我们先对正则表达式语法做一个简单的说明,这样方便理解。网上关于正则的资料很多很多,我在这里只做下整理

我们先来举个例子分析一个可以匹配几种格式的电话号码,像(010)88886666,或022-22334455,或02912345678等的表达式

表达式: \\(?0\d{2}[) -]?\d{8}

IOS开发 正则表达式

(?=.*\d)(?=.*[a-zA-Z])(?=.*[~`!@#$%^*()-_+={[}]|\\:;"',.?/])[\da-zA-Z~`!@#$%^*()-_+={[}]|\\:;"',.?/]{6,20}

iOS-问题:正则表达式转义字符:\

有如下正则表达式:

强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8-10 之间): ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$

使用如上正则表达式验证的时候发现没有达到自己想要的效果,那是因为上面的 \d 会被当成转义字符来对待,XCode警告 Unknown escape sequence '\d' ,如下:

最后po如上字符串的时候发现po出来的是 ^(?=.*d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$ ,少了 \ 正因为如此,所以正则的校验就不成功了。

解决办法,就是在 \d 前面再加个 \ ,不让他转义,如下:

这样正则的校验就正确了。

iOS开发,最新判断是否是手机号的正则表达式

// 判断是否是手机号

+ (BOOL)isValidPhone:(NSString *)phone

{

if (phone.length != 11)

{

return NO;

}else{

/**

* 移动号段正则表达式

*/

NSString *CM_NUM = @"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$";

/**

* 联通号段正则表达式

*/

NSString *CU_NUM = @"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\d{8}|(1709)\\d{7}$";

/**

* 电信号段正则表达式

*/

NSString *CT_NUM = @"^((133)|(153)|(177)|(18[0,1,9]))\\d{8}$";

NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM_NUM];

BOOL isMatch1 = [pred1 evaluateWithObject:phone];

NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU_NUM];

BOOL isMatch2 = [pred2 evaluateWithObject:phone];

NSPredicate *pred3 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT_NUM];

BOOL isMatch3 = [pred3 evaluateWithObject:phone];

if (isMatch1 || isMatch2 || isMatch3) {

return YES;

}else{

return NO;

}

}

}


网站标题:ios开发正则表达式,正则表达式的实现原理
浏览路径:http://myzitong.com/article/dsehghi.html