使用单词验证正则表达式输入字符验证

时间:2012-10-31 21:00:56

标签: objective-c ios regex nsregularexpression

比方说,我有一个正则表达式,用于检查输入值的整体验证。例如,它是一个电子邮件输入框,当用户点击进入时,我会针对^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$进行检查,看看它是否是有效的电子邮件地址。

我想要实现的是,我也想拦截字符输入,并检查每个输入字符以查看该字符是否也是有效字符。我可以通过添加额外的正则表达式来完成此操作,例如[A-Z0-9._%+-] 但这不是我想要的

有没有办法从给定的正则表达式中提取尽可能广泛的可接受字符?因此,在上面的示例中,我是否可以提取由原始正则表达式定义的所有有效字符(例如^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$以编程方式

我将不胜感激任何帮助或提示。

P.S。这是用Objective-C编写的iOS项目。

1 个答案:

答案 0 :(得分:1)

如果你不介意写半个正则表达式解析器,当然。您必须能够区分文字和元字符,并展开/合并所有字符类(包括否定字符类和嵌套否定字符类,如果正则表达式支持它们)。

如果NSRegularExpressions没有附带一些方便的方法,我无法想象它会如何可能。试想^。当它在字符类之外时,它是一个可以忽略的元字符。如果它在一个字符类中,它是一个元字符,它会否定字符类,除非它不是第一个字符。 -是字符类中的元字符,除非它是第一个字符,最后一个字符,或者在另一个字符范围之后(取决于正则表达式的味道)。而且我甚至都没有谈论转义字符。

我不知道NSRegularExpressions,但有些风格也支持嵌套字符类(如所有辅音的[a-z[^aeiou]])。我想你会得到我的目标。