正则表达式约束验证-grails

标签 regex validation grails constraints

我现在正在从事一个 grails 项目,并且我很难使用正则表达式来过滤我想要的所需数据。事情就是这样,我有一个字段可以接受所有字母和数字(大写和小写)以及键盘上的所有特殊字符(@*$&#)。它仅接受数字和字母的组合 (0925abc) 或字母、数字和特殊字符的组合 (0925abc?><)。如果输入的是纯字母(adCbT)、纯数字(0383)或纯特殊字符(@#$>_+-),系统将拒绝输入。这可能与 grails 中的正则表达式约束有关吗?感谢您分享您的知识。

最佳答案

所以,如果您只是在寻找适合您的约束的正则表达式,例如

'.*([a-zA-Z][0-9@*$&#]+|[0-9][a-zA-Z@*$&#]|[@*$&#][0-9a-zA-Z]).*'

应该可以解决问题。它确保您的输入中至少有一次从一种字符类到另一种字符类的转换。

使用负前瞻,它甚至更容易维护

'^(?![a-zA-Z]+$)(?![0-9]+$)(?![@*$&#]+$).+$'

这三个术语确保输入不仅仅包含来自一种字符类的字符。

这里是一些测试表达式的代码:

def ok = ['asdasd90','90asdas','asd#sdfsd9','asd9sdf','908787#@']
def nok = ['asdewSDFDSFasd','23803','@*$&#']
def expression = '^(?![a-zA-Z]+$)(?![0-9]+$)(?![@*$&#]+$).+$'
ok.each { value ->
    assert value.matches(expression)
}
nok.each { value ->
    assert !value.matches(expression)
}

关于正则表达式约束验证-grails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10408188/

相关文章:

regex - Perl:为什么 eval '/(...)/' 不设置 $1?

javascript - JQ和Js如何验证内容为空(空格键)

asp.net - 在文件上传期间使用 Javascript 获取图像尺寸

grails - 在Grails中进行多个动态方法调用或声明变量

grails - 将@Build转换为Grails 3

JavaScript 通过正则表达式拆分字符串

r - 在 R 中使用正则表达式提取子字符串

c - 从文本文件读取数据到链表,错误处理

unit-testing - Grails 在单元测试 2.4.x 期间将服务注入(inject)域

ruby - 为什么 gsub 的 '\1' 捕获组会产生这个字符串?