Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在[objective-c]中验证用户名?_Ios_Objective C_Validation_Uitextfield - Fatal编程技术网

Ios 如何在[objective-c]中验证用户名?

Ios 如何在[objective-c]中验证用户名?,ios,objective-c,validation,uitextfield,Ios,Objective C,Validation,Uitextfield,我对验证的要求是验证用户名,它允许输入小的a-z和0-9,并且只有两个符号和.dot 但符号不会重复 名称开头不允许使用和符号 有人能帮我吗??如何进行此验证 我已经尝试过这个代码,但它工作正常,但它重复符号我如何避免重复 - (BOOL)validateString:(NSString*)stringToSearch { NSString *emailRegex = @"[a-z0-9._]{5,15}"; NSPredicate *regex = [NSPredicate p

我对验证的要求是验证用户名,它允许输入小的a-z和0-9,并且只有两个符号和.dot

但符号不会重复

名称开头不允许使用和符号

有人能帮我吗??如何进行此验证

我已经尝试过这个代码,但它工作正常,但它重复符号我如何避免重复

- (BOOL)validateString:(NSString*)stringToSearch
{
    NSString *emailRegex = @"[a-z0-9._]{5,15}";
    NSPredicate *regex = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
    return [regex evaluateWithObject:stringToSearch];



}

使用以下正则表达式检查字符是否正确:

^([a-z0-9]+[._])*[a-z0-9]+$
另外,单独检查字符串长度。或者使用lookaheads

编辑:似乎我误解了一些要求。上面的正则表达式也不允许在名称末尾使用符号。如果您想在此处允许符号,请将正则表达式更改为 ^[a-z0-9]+[.u3;]*$


如果使用谓词,则可以省略前导的^和尾随的$.

纯正则表达式方法(用于先行计数),可能还有其他简化的解决方案

"(?=[a-z0-9._]{5,15})([a-z0-9][._]?)+"
编辑

关于附加问题:如何避免用户输入被拒绝的字符

从技术上讲,您可以通过实现UITextViewDelegate方法textView\uU1:shouldChangeTextInRange:replacementText:来实现这一点。但这可能会给用户留下键盘响应不正确的印象

因此,实现TextViewEndediting:方法时,应使用某种警报显示警报,这可能是一种更好的用户体验。

define Validation@abcdefghijklmnopqrstuvwxyz012456789。
在这里,我还必须在我的项目中对文本长度不超过50个字符进行验证,以便您可以删除该条件

请包括一些应被拒绝或批准的示例输入。很好的解释。这可能是@prince真正想要的。但这项要求不包括最后一项symbol@zcui93是的,我一秒钟前也意识到了这一点。@zcui93:我如何避免输入被regex ^[a-z0-9]+[.\u]*[a-z0-9]+$condition]拒绝的字符?编辑功能使我的答案看起来毫无用处。“真遗憾!”王子,这是另一个话题,请把这个问题作为一个新的单独的问题提出来。
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
     NSCharacterSet *unacceptedInput = nil;
     unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:ALPHA] invertedSet];
            
            if ([[string componentsSeparatedByCharactersInSet:unacceptedInput] count] <= 1) {
                
                int newLength = (int)textField.text.length + (int)string.length - (int)range.length;
                if (newLength > 50) {
                    return false;
                } else {
                    return true;
                }
            } else {
                return false;
            }
}