The validity of mobile phone number and price amount in iOS development and the restriction of special characters

Source: Internet
Author: User

In the actual development process, often encounter some can not allow users to enter the mobile phone number, the input of the correct judgment of the mobile phone number; Some input boxes can only enter numbers, cannot enter letters or special characters, and others such as price amounts can only enter numbers and decimal points and retain two digits after the decimal point.

Validity judgment of mobile phone number
Detect if it is a mobile phone number
-(BOOL) Ismobilenumber: (NSString *) mobilenum
{
/**
* Mobile phone number
* Mobile: 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
* Unicom: 130,131,132,152,155,156,185,186
* Telecom: 133,1349,153,180,189
*/
NSString * MOBILE = @ "^1 (3[0-9]|5[0-35-9]|8[025-9]) \\d{8}$";
/**
10 * Mobile: 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 * Unicom: 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 * China Telecom: Telecom
21 * 133,1349,153,180,189
22 */
NSString * CT = @ "^1 ((33|53|8[09)) [0-9]|349] \\d{7}$";
/**
25 * Mainland China fixed and PHS
26 * Area code: 010,020,021,022,023,024,025,027,028,029
27 * Number: seven-bit or eight-bit
28 */
NSString * PHS = @ "^0 (10|2[0-5789]|\\d{3}) \\d{7,8}$";

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 ([regextestmobile evaluatewithobject:mobilenum] = = YES)
|| ([regextestcm evaluatewithobject:mobilenum] = = YES)
|| ([regextestct evaluatewithobject:mobilenum] = = YES)
|| ([regextestcu evaluatewithobject:mobilenum] = = YES))
{
return YES;
}
Else
{
return NO;
}
}

Restricted input of special characters, validity judgment of price amount

#define Mydotnumbers @ "0123456789.\n"
#define Mynumbers @ "0123456789\n"
-(void) createtextfiled {
textfield1_ = [[Uitextfield alloc] Initwithframe:cgrectmake (0, 0, 20, 20)];
Textfield1_.delegate = self;
[Self addsubview:textfield1_];

textfield2_ = [[Uitextfield alloc] Initwithframe:cgrectmake (0, 0, 20, 20)];
Textfield2_.delegate = self;
[Self addsubview:textfield2_];

textfield3_ = [[Uitextfield alloc] Initwithframe:cgrectmake (0, 0, 20, 20)];
Textfield3_.delegate = self;
[Self addsubview:textfield3_];

}

-(void) Showmymessage: (nsstring*) Ainfo {

Uialertview *alertview = [[Uialertview alloc] initwithtitle:@ "hint" message:ainfo delegate:self cancelbuttontitle:@ "OK" Otherbuttontitles:nil, nil];
[Alertview show];
[Alertview release];

}

-(BOOL) TextField: (Uitextfield *) TextField Shouldchangecharactersinrange: (nsrange) range replacementstring: ( NSString *) String {
Nscharacterset *cs;
if ([TextField isequal:textfield1_]) {
CS = [[Nscharacterset charactersetwithcharactersinstring:mynumbers] invertedset];
NSString *filtered = [[string Componentsseparatedbycharactersinset:cs] componentsjoinedbystring:@ ""];
BOOL basictest = [string isequaltostring:filtered];
if (!basictest) {
[Self showmymessage:@ "can only enter numbers"];
return NO;
}
}
else if ([TextField isequal:textfield2_]) {
CS = [[Nscharacterset charactersetwithcharactersinstring:mynumbers] invertedset];
NSString *filtered = [[string Componentsseparatedbycharactersinset:cs] componentsjoinedbystring:@ ""];
BOOL basictest = [string isequaltostring:filtered];
if (!basictest) {
[Self showmymessage:@ "can only enter numbers"];
return NO;
}
}
else if ([TextField isequal:textfield3_]) {
Nsuinteger Ndotloc = [Textfield.text rangeofstring:@ "."]. Location
if (Nsnotfound = = Ndotloc && 0! = range.location) {
CS = [[Nscharacterset charactersetwithcharactersinstring:mydotnumbers] invertedset];
}
else {
CS = [[Nscharacterset charactersetwithcharactersinstring:mynumbers] invertedset];
}
NSString *filtered = [[string Componentsseparatedbycharactersinset:cs] componentsjoinedbystring:@ ""];
BOOL basictest = [string isequaltostring:filtered];
if (!basictest) {

[Self showmymessage:@ "only enter numbers and decimal points"];
return NO;
}
if (nsnotfound! = Ndotloc && range.location > Ndotloc + 3) {
[Self showmymessage:@ "up to three digits after decimal point"];
return NO;
}
}
return YES;
}

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.