iOS中的Regex将文本字段限制为仅包含字母和单个撇号
返回文本字段后,我想检查提供的文本是否有效。“有效”仅表示名称的字母或单个撇号iOS中的Regex将文本字段限制为仅包含字母和单个撇号,ios,regex,nsregularexpression,Ios,Regex,Nsregularexpression,返回文本字段后,我想检查提供的文本是否有效。“有效”仅表示名称的字母或单个撇号 我对正则表达式很陌生。是否有一个简单的正则表达式可以用于此检查,或者有人可以告诉我一些阅读材料,在这些材料中,我可以学习编写一个符合我需要的正则表达式?您可以使用该函数检查是否应插入输入并限制其中的字符。由于您的限制相当简单,因此不需要正则表达式,您可以使用字符集 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRa
我对正则表达式很陌生。是否有一个简单的正则表达式可以用于此检查,或者有人可以告诉我一些阅读材料,在这些材料中,我可以学习编写一个符合我需要的正则表达式?您可以使用该函数检查是否应插入输入并限制其中的字符。由于您的限制相当简单,因此不需要正则表达式,您可以使用字符集
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSMutableCharacterSet *allowedCharacters = [NSMutableCharacterSet alphanumericCharacterSet];
[allowedCharacters addCharactersInString:@"'"];
if([string rangeOfCharacterFromSet:allowedCharacters.invertedSet].location == NSNotFound){
return YES;
}
return NO;
}
regx应该是
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvxyz'
你可以用
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if (textField == emailid) {
NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'"] invertedSet];
NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
;
return [string isEqualToString:filtered];
}
}
您可以这样做,但如果输入无效,则需要显示错误
- (BOOL)textFieldShouldEndEditing:(UITextField *)aTextField
{
NSString *const regularExpression = @"^[a-zA-Z']+$";
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regularExpression
options:kNilOptions
error:&error];
if (error) {
// Handle error
}
NSUInteger numberOfMatches = [regex numberOfMatchesInString:aString
options:0
range:NSMakeRange(0, [aString length])];
return numberOfMatches > 0;
}
分享一些具体的例子,以便有一个清晰的想法…哪一部分需要澄清?一段代码片段不适合这个问题,因为除了我要问的那一点之外,其他的都是无关紧要的。如果是撇号位,那么一个可接受条目的示例将是O'Dowed,但不可接受条目将是O'Dowed。我不想检查每个字符,我想在完成后检查整个字符串。有什么区别?插入时检查单个字符更安全,而不是在编辑模式结束时检查,通常是这样做的。我同意这样会更好,但这不是我的决定。正如我在上面评论的一样,我不想检查每个字符,我想在完成后检查整个字符串。