正则表达式验证-grails约束

正则表达式验证-grails约束,grails,constraints,gorm,grails-constraints,Grails,Constraints,Gorm,Grails Constraints,我是grails的新手,在使用正则表达式进行匹配验证时遇到了问题。我想要实现的是,我的字段可以接受字母数字和特殊字符的组合,如句号(.)、逗号(,)和破折号(-),它可以接受数字(099)或字母(alpha),但它不会接受只有特殊字符(“.-”)的输入。是否可以使用正则表达式过滤此类输入? 请帮忙。谢谢你分享你的知识 我想你可以用这样的正则表达式来匹配: ".*[0-9a-zA-Z.,-]+.*" 这意味着: “.”以任何字符开头 “*”不包含这些字符中的任何一个或多个 “[0-9a-zA-Z

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

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

".*[0-9a-zA-Z.,-]+.*"
这意味着:

“.”以任何字符开头

“*”不包含这些字符中的任何一个或多个

“[0-9a-zA-Z,-]”的字符范围为0-9、a-Z等,或。或者,或者-

“+”具有一个或多个此类字符(因此此集合中必须有一个字符)

“.”以任何字符结尾

“*”不包含这些字符中的任何一个或多个


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

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

".*[0-9a-zA-Z.,-]+.*"
^[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
  /
这意味着:

“.”以任何字符开头

“*”不包含这些字符中的任何一个或多个

“[0-9a-zA-Z,-]”的字符范围为0-9、a-Z等,或。或者,或者-

“+”具有一个或多个此类字符(因此此集合中必须有一个字符)

“.”以任何字符结尾

“*”不包含这些字符中的任何一个或多个


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

很好,但由于这是针对Grails的(这是一种Java模式),因此不能使用后面不区分大小写的匹配。您应该将其替换为显式大小写匹配(
a-zA-Z
),或者在开头使用内联标志,
(?i)
。已经多年没有使用Java了。我确信正则表达式是以“/stuff/flags”风格创建的。哇!这个真的很管用!就像魔术一样!谢谢分享和解释,我现在明白了,谢谢大家!很好,但由于这是针对Grails的(这是一种Java模式),因此不能使用后面不区分大小写的匹配。您应该将其替换为显式大小写匹配(
a-zA-Z
),或者在开头使用内联标志,
(?i)
。已经多年没有使用Java了。我确信正则表达式是以“/stuff/flags”风格创建的。哇!这个真的很管用!就像魔术一样!谢谢分享和解释,我现在明白了,谢谢大家!这不完全是我所需要的,因为当你用字母数字字符输入它时,它也接受除“,”以外的其他字符,但这一个也帮助我了解关于regex的更多信息,谢谢分享chm052!这不完全是我所需要的,因为当你用字母数字字符输入它时,它也接受除“,”以外的其他字符,但这一个也帮助我了解关于regex的更多信息,谢谢分享chm052!
^[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
  /