【问题标题】:Input character validation using word validation regular expression使用单词验证正则表达式进行输入字符验证
【发布时间】:2012-11-14 23:08:55
【问题描述】:

假设我有一个正则表达式,它检查输入值的验证作为一个整体。例如,它是一个电子邮件输入框,当用户按 Enter 键时,我会对照^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$ 检查它是否是有效的电子邮件地址。

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

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

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

附:这是用 Objective-C 编写的 iOS 项目。

【问题讨论】:

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

标签: objective-c ios regex nsregularexpression


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多