验证电话号码
我想有仅13的数字值或13numeric值可以用“+”为前缀的sysmbol.so +不是强制性 示例:1234567891234 另一个例子是:1234567891234验证电话号码
我已经尝试了上面的链接,但是这个+1234545但我想只有13个numarals或+可以用13个数字作为前缀。
请让我知道,我可以在这里
改变它,这个是我试图
NSString * forNumeric = @"^\\+(?:[0-9] ?){6,14}[0-9]$";
BOOL isMatch = [[textFieldRounded text] isMatchedByRegex:forNumeric];
if (isMatch == YES){
NSLog(@"Matched");
}
else {
NSLog(@"Not matched");
}
^(\+?)(\d{13})$
应该做的伎俩,逃避客观C使用斜线。 13位数字,带有选项+
前缀。
如果你想玩正则表达式,你可以使用像this one这样的服务进行视觉反馈,非常方便。
NSString * forNumeric = @"^(\\+?)(\\d{13})$";
在这种情况下,用户必须输入一个13位数字。如果我们希望用户输入小于13的数字,可以做些什么?也许9-10位数字。 – ScarletWitch
'NSString * forNumeric = @“^(\\ +?)(\\ d {a,b})$”;“ 只需将a和b替换为您想要的包含范围,例如a = 9,b = 10。 –
NSDataDetector *matchdetector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypePhoneNumber
error:&error];
NSUInteger matchNumber = [matchdetector numberOfMatchesInString:string options:0 range:NSMakeRange(0, [string length])];
如果使用UITextField
则:
textField.dataDetectorTypes = UIDataDetectorTypePhoneNumber;
'dataDetectorTypes'不适用于文本字段。 – Nishant
以下是我用于验证英国手机号码做:
- (BOOL) isValidPhoneNumber
{
NSString * regex = @"((07|00447|004407|\\+4407|\\+447)\\d{9})";
NSPredicate *testPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
BOOL validationResult = [testPredicate evaluateWithObject: self];
return validationResult;
}
看它是否有助于你
这个怎么样?
NSString *forNumeric = @"\\+?[0-9]{6,13}";
NSPredicate *predicate;
predicate = [NSPredicate predicateWithFormat:@"self matches %@", forNumeric];
BOOL isMatch = [predicate evaluateWithObject:@"+1234567890123"];
if (isMatch) NSLog(@"Matched");
else NSLog(@"Not matched");
NSString * regex = @"((07|00447|004407|\\+4407|\\+447)\\d{9})";
已经找到了0领先或龙头+44一次,为什么再次搜索呢?
基本简化导致
NSString * regex = @"((07|00440?7|\\+440?7)\\d{9})";
然后
NSString * regex = @"((07|(00|\\+)440?7)\\d{9})";
然后
NSString * regex = @"((0|(00|\\+)440?)7\\d{9})";
但00不是唯一的共同拨号前缀,011在美国使用和加拿大。
并称,和轮转动的顺序,得到:
NSString * regex = @"(^((0(0|11)|\\+)440?|0)7\\d{9}$)";
或优选
NSString * regex = @"(^(?:(?:0(?:0|11)|\\+)(44)0?|0)(7\\d{9}$))";
允许00447,011447,447,004407,0114407,4407,07在开始,并与非捕获组。
对于较宽的输入格式匹配,允许不同的标点符号(连字符,括号,空格)使用
NSString * regex = @"(^\\(?(?:(?:0(?:0|11)\\)?[\\s-]?\\(?|\\+)(44)\\)?[\\s-]?\\(?(?:0\\)?[\\s-]?\\(?)?|0)(7\\d{9})$)";
提取$ 1的44个国家或地区代码(如果为空号输入为07 ...)和10数字为2美元的NSN。
但是,请注意,从070和076(除07624之外)开始的数字不是手机号码。
最终图案:
NSString * regex = @"(^\\(?(?:(?:0(?:0|11)\\)?[\\s-]?\\(?|\\+)(44)\\)?[\\s-]?\\(?(?:0\\)?[\\s-]?\\(?)?|0)(7([1-5789]\\d{2}|624)\\)?[\\s-]?\\d{6}))$)";
提取NSN在$ 2,则从中除去所有的非数字用于进一步处理。
不可能使用正则表达式吗?请让我知道 – user198725878