我现在正在执行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)
}




