Regex 正则表达式验证-grails
我对grails很陌生。。我现在在使用匹配项进行验证时遇到了一个小问题。我想做的是,一个字段可以接受字母数字和特殊字符的组合,只接受字母和数字,如果用户只输入特殊字符,系统应该提示用户一个错误。 我使用了匹配约束来验证数据,我很难设置regex,在这里字段将不接受仅包含特殊字符的输入。Regex 正则表达式验证-grails,regex,grails,groovy,grails-constraints,Regex,Grails,Groovy,Grails Constraints,我对grails很陌生。。我现在在使用匹配项进行验证时遇到了一个小问题。我想做的是,一个字段可以接受字母数字和特殊字符的组合,只接受字母和数字,如果用户只输入特殊字符,系统应该提示用户一个错误。 我使用了匹配约束来验证数据,我很难设置regex,在这里字段将不接受仅包含特殊字符的输入。 请帮帮我。。非常感谢分享您的知识 我不知道grails是否支持,但如果它支持,这个正则表达式将适用于您: /(?=^[\pL\pN!:;]+$)(?!^[!:;]+$)/ 说明: /
请帮帮我。。非常感谢分享您的知识 我不知道grails是否支持,但如果它支持,这个正则表达式将适用于您:
/(?=^[\pL\pN!:;]+$)(?!^[!:;]+$)/
说明:
/ : regex delimiter
(?= : begin positive lookahead
^ : start of string
[\pL\pN!:;]+ : a letter, a digit or a special char one or more times
$ : end of string
) : end of lookahead
(?! : begin negative lookahead
^ : start of string
[!:;]+ : a special char one or more times
$ : end of string
) : end of lookahead
/ : regex delimiter
我不知道grails是否支持,但如果支持,这个正则表达式将适用于您:
/(?=^[\pL\pN!:;]+$)(?!^[!:;]+$)/
说明:
/ : regex delimiter
(?= : begin positive lookahead
^ : start of string
[\pL\pN!:;]+ : a letter, a digit or a special char one or more times
$ : end of string
) : end of lookahead
(?! : begin negative lookahead
^ : start of string
[!:;]+ : a special char one or more times
$ : end of string
) : end of lookahead
/ : regex delimiter
我想我理解你的问题,但如果我错了,请纠正我。只要至少有一个字母或数字,输入就有效,对吗?换句话说,如果没有字母或数字(只有特殊字符),那么输入无效 看看这是否有效:
/^.*[A-Za-z0-9].*$/
下面是我的groovy小测试:
import java.util.regex.Matcher
import java.util.regex.Pattern
def pattern = ~/^.*[A-Za-z0-9].*$/
assert pattern.matcher("abc").matches()
assert pattern.matcher("ABC").matches()
assert pattern.matcher("abc123").matches()
assert pattern.matcher("123").matches()
assert pattern.matcher("abc!").matches()
assert pattern.matcher("!abc").matches()
assert pattern.matcher("1!bc").matches()
assert pattern.matcher("!.~").matches() == false
解释:
/ regex start
^ start of string
.* any character (0 or more times)
[A-Za-z0-9] at least 1 letter or number
.* any character (0 or more times)
$ end of string
/ regex end
我想我理解你的问题,但如果我错了,请纠正我。只要至少有一个字母或数字,输入就有效,对吗?换句话说,如果没有字母或数字(只有特殊字符),那么输入无效 看看这是否有效:
/^.*[A-Za-z0-9].*$/
下面是我的groovy小测试:
import java.util.regex.Matcher
import java.util.regex.Pattern
def pattern = ~/^.*[A-Za-z0-9].*$/
assert pattern.matcher("abc").matches()
assert pattern.matcher("ABC").matches()
assert pattern.matcher("abc123").matches()
assert pattern.matcher("123").matches()
assert pattern.matcher("abc!").matches()
assert pattern.matcher("!abc").matches()
assert pattern.matcher("1!bc").matches()
assert pattern.matcher("!.~").matches() == false
解释:
/ regex start
^ start of string
.* any character (0 or more times)
[A-Za-z0-9] at least 1 letter or number
.* any character (0 or more times)
$ end of string
/ regex end
AFAIK你不能只用一个正则表达式。