2018-12-20 網(wǎng)易云信檢測(cè)消息體內(nèi)得電話號(hào)碼

NIMSessionTextContentView中檢測(cè)文本內(nèi)容:

#define PHONEREGULAR @"\\d{3,4}[- ]?\\d{7,8}"http://匹配10到12位連續(xù)數(shù)字,或者帶連字符/空格的固話號(hào),空格和連字符可以省略。


/*

*? // 驗(yàn)證是固話或者手機(jī)號(hào)

*

*? @param mobileNum 手機(jī)號(hào)

*

*? @return 是否

*/

- (BOOL)isMobilePhoneOrtelePhone:(NSString*)mobileNum {

? ? if(mobileNum==nil|| mobileNum.length==0) {

? ? ? ? returnNO;

? ? }

? ? /**

?? ? * 手機(jī)號(hào)碼

?? ? * 移動(dòng):134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188

?? ? * 聯(lián)通:130,131,132,152,155,156,185,186

?? ? * 電信:133,1349,153,180,189

?? ? */

? ? NSString * MOBILE = @"^((13)|(14)|(15)|(17)|(18))\\d{9}$";// @"^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$";

? ? /**

?? ? 10? ? ? ? * 中國(guó)移動(dòng):China Mobile

?? ? 11? ? ? ? * 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188

?? ? 12? ? ? ? */

? ? NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$";

? ? /**

?? ? 15? ? ? ? * 中國(guó)聯(lián)通:China Unicom

?? ? 16? ? ? ? * 130,131,132,152,155,156,185,186

?? ? 17? ? ? ? */

? ? NSString * CU = @"^1(3[0-2]|5[256]|8[56])\\d{8}$";

? ? /**

?? ? 20? ? ? ? * 中國(guó)電信:China Telecom

?? ? 21? ? ? ? * 133,1349,153,180,189

?? ? 22? ? ? ? */

? ? NSString * CT = @"^1((33|53|8[09])[0-9]|349)\\d{7}$";

? ? /**

?? ? 25? ? ? ? * 大陸地區(qū)固話及小靈通

?? ? 26? ? ? ? * 區(qū)號(hào):010,020,021,022,023,024,025,027,028,029

?? ? 27? ? ? ? * 號(hào)碼:七位或八位

?? ? 28? ? ? ? */

? ? NSString * PHS = @"^((0\\d{2,3}-?)\\d{7,8}(-\\d{2,5})?)$";// @"^0(10|2[0-5789]-|\\d{3})\\d{7,8}$";


? ? NSPredicate *regextestPHS = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", PHS];

? ? NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];

? ? NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];

? ? NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];

? ? NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];


? ? if(([regextestmobileevaluateWithObject:mobileNum] ==YES)

? ? ? ? || ([regextestcmevaluateWithObject:mobileNum] ==YES)

? ? ? ? || ([regextestctevaluateWithObject:mobileNum] ==YES)

? ? ? ? || ([regextestcuevaluateWithObject:mobileNum] ==YES)

? ? ? ? || ([regextestPHSevaluateWithObject:mobileNum]==YES)) {

? ? ? ? returnYES;

? ? }

? ? else{

? ? ? ? returnNO;

? ? }

}

?NSRangestringRange =NSMakeRange(0, text.length);

? ? //正則匹配

? ? NSError*error;

? ? NSRegularExpression *regexps = [NSRegularExpression regularExpressionWithPattern:PHONEREGULAR options:0 error:&error];

? ? if(!error && regexps !=nil) {

? ? ? ? [regexpsenumerateMatchesInString:text options:0 range:stringRange usingBlock:^(NSTextCheckingResult * _Nullable result, NSMatchingFlags flags, BOOL * _Nonnull stop) {

? ? ? ? ? ? //可能為電話號(hào)碼的字符串及其所在位置

? ? ? ? ? ? NSString *actionString = [NSString stringWithFormat:@"%@",[self.textLabel.text substringWithRange:result.range]];

? ? ? ? ? ? NSRangephoneRange = result.range;

? ? ? ? ? ? //這里需要判斷是否是電話號(hào)碼,并添加鏈接

? ? ? ? ? ? if([selfisMobilePhoneOrtelePhone:actionString]) {

? ? ? ? ? ? ? ? [self.textLabeladdCustomLink:actionStringforRange:result.range];

? ? ? ? ? ? }

? ? ? ? }];

? ? }

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容