Objective c 使用单词验证正则表达式进行输入字符验证

Objective c 使用单词验证正则表达式进行输入字符验证,objective-c,ios,regex,nsregularexpression,Objective C,Ios,Regex,Nsregularexpression,比如说,我有一个正则表达式,它从整体上检查输入值的有效性。例如,它是一个电子邮件输入框,当用户点击enter键时,我将其与^[A-Z0-9.\%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$进行检查,以确定它是否是有效的电子邮件地址 我想实现的是,我也想截取字符输入,并检查每个输入字符,看看该字符是否也是有效字符。我可以通过添加一个额外的正则表达式来实现这一点,例如[A-Z0-9.\uz%+-],但这不是我想要的 有没有办法从给定的正则表达式中提取尽可能多的可接受字符?因此,在上面的

比如说,我有一个正则表达式,它从整体上检查输入值的有效性。例如,它是一个电子邮件输入框,当用户点击enter键时,我将其与
^[A-Z0-9.\%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$
进行检查,以确定它是否是有效的电子邮件地址

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

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

如果有任何帮助或提示,我将不胜感激


另外,这是用Objective-C编写的iOS项目。

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

如果
NSRegularExpressions
没有提供一些方便的方法,我无法想象如果没有它怎么可能。只要想想
^
。当它位于字符类之外时,它是可以忽略的元字符。如果它在字符类中,则它是元字符,它否定字符类,除非它不是第一个字符
-
是字符类中的元字符,除非它是第一个字符、最后一个字符或紧跟在另一个字符范围之后(取决于正则表达式的风格)。我甚至不是在说转义字符


我不知道
NSRegularExpressions
,但有些风格还支持嵌套字符类(如
[a-z[^aeiou]]]
,用于所有辅音)。我想你明白我的意思了。

@m.buettner“…编写半个正则表达式解析器…”意味着可能不值得编写大量代码。没有简单的方法可以做到这一点?@m.buettner请将您的评论作为答案发布,以便我可以接受?谢谢