【问题标题】:regex validation - grails constraints正则表达式验证 - grails 约束
【发布时间】:2012-03-08 08:03:12
【问题描述】:

我是 grails 的新手,我在使用正则表达式进行匹配验证时遇到问题。我想要发生的是我的字段可以接受字母数字和特定特殊字符的组合,如句点 (.)、逗号 (,) 和破折号 (-),它可以接受数字 (099) 或仅字母 (alpha),但它不接受只有特殊字符(“.-”)的输入。是否可以使用正则表达式过滤这种输入? 请帮忙。感谢您分享你的知识。

【问题讨论】:

    标签: grails constraints grails-orm grails-constraints


    【解决方案1】:
    ^[0-9a-zA-Z,.-]*?[0-9a-zA-Z]+?[0-9a-zA-Z,.-]*$
    
    meaning:
      /
      ^          beginning of the string
      [...]*?    0 or more characters from this class (lazy matching)
      [...]+?    1 or more characters from this class (lazy matching)
      [...]*     0 or more characters from this class
      $          end of the string
      /
    

    【讨论】:

    • 很好,但由于这是用于 Grails(这是一种 Java 模式),因此您不能使用尾随不区分大小写的匹配。您应该将其替换为显式大小写匹配 (a-zA-Z),或者在开头使用内联标志 (?i)
    • 已编辑。多年来没有使用Java。确定正则表达式是“/stuff/flags”样式创建的。
    • 哇!这个真的有效!这就像魔术!感谢分享和解释,我现在明白了,谢谢大家!
    【解决方案2】:

    我认为你可以用这样的正则表达式来匹配它:

    ".*[0-9a-zA-Z.,-]+.*"
    

    这意味着:

    “。” 以任意字符开头

    "*" 有零个或多个这些字符

    "[0-9a-zA-Z.,-]" 包含 0-9、a-z 等范围内的字符,或 .或 , 或 -

    "+" 有一个或多个这样的字符(所以这个集合中必须有一个)

    “。” 以任意字符结尾

    "*" 有零个或多个这些字符

    这对我来说没问题,希望对你有帮助!

    【讨论】:

    • 不完全是我需要的,因为当你用字母数字字符输入它时,它也接受除“.,-”以外的其他字符,但这也有助于我更多地了解正则表达式,谢谢分享chm052!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2017-03-10
    相关资源
    最近更新 更多