我有一个文本字段,我正在使用正则表达式执行验证。但是当用户在文本字段中输入连字符并单击按钮时我会遇到问题,然后应该提供一个警报,表明没有输入无效。我正在对字符串和特殊字符执行验证,但对于特殊字符,它没有得到验证。
这是我的代码:
NSRegularExpression *regex = [[[NSRegularExpression alloc]
initWithPattern:@"[a-zA-Z][#$%&*()']" options:0 error:NULL] autorelease];
答案 0 :(得分:0)
您可以使用rangeOfString
NSRange k = [str rangeOfString:@"-"];
if(k.length != 0)
... Show your alert message
我觉得这将满足您的要求,无需介入正则表达式的复杂性。
答案 1 :(得分:0)
我对objective-c不太熟悉,而且它的正则表达式的风格,我不是完全清楚你所要求的,但你的正则表达式将不< / em>匹配连字符。它应匹配一个字母,后跟下列字符之一:#$%&*()'
。以下是应该匹配的一些示例和一些不匹配的内容:
SHOULD MATCH SHOULD NOT MATCH
---- ---- ---- ------ ------
a# a$ A -- C3PO
A) A* # - huh?
T% Q# g- AA## 123
j& a( $R () bbb5
z' B& qq "D%" ()-
如果其中任何一个与您想要匹配的内容不一致,那么您需要提出一个包含您想要匹配的所需模式的问题。一些例子是:
[]
)”正则表达式是一种允许指定几乎任何基于文本的数据模式的语言。如果您不需要匹配模式,则可能不需要正则表达式。祝你好运!
答案 2 :(得分:0)
请勿显示提醒,因为用户输入了您不喜欢的字符。这是非常糟糕的用户体验,特别是当使用软键盘更容易发生错别字时。
相反,处理输入以提取您想要的字符。考虑编写一个带有电话号码输入字段的Web表单。您对电话号码中的人类可读格式不感兴趣 - 连字符,国家/地区代码的加号前缀等。但是没有任何东西可以阻止用户输入这些字符。你有一些代码可以删除你想要的无效字符。
NSString
甚至可以通过-stringByTrimmingCharactersInSet:
轻松实现这一目标。您可以使用要从给定NSCharacterSet
实例中删除的字符定义NSString
,调用-stringByTrimmingCharactersInSet:
,然后获得一个自动释放的NSString
实例,其中只包含您想要的字符,例如:
NSString *rawInput; // value assigned elsewhere to @"555-555-1212"
NSCharacterSet *characterSet = [ NSCharacterSet characterSetWithCharactersInString: @"-" ];
NSString *processedInput = nil;
processedInput = [ rawInput stringByTrimmingCharactersInSet: characterSet ];
NSLog( @"processedInput: %@", processedInput ); // logs "5555551212"