Java 如何编写这种情况下的if条件?
我需要为密码字段设置一个错误,条件是“只允许2~22个字符和符号” 但我有点被困在这里了 以下是我到目前为止得到的信息:Java 如何编写这种情况下的if条件?,java,if-statement,Java,If Statement,我需要为密码字段设置一个错误,条件是“只允许2~22个字符和符号” 但我有点被困在这里了 以下是我到目前为止得到的信息: if( !(editText.length() >= 2 && editText.length() <= 22 ) || !(editText.contains("-") || editText.contains("_") || editText.contains(",")) ) { //set error message }
if(
!(editText.length() >= 2 && editText.length() <= 22 ) ||
!(editText.contains("-") || editText.contains("_") || editText.contains(","))
) {
//set error message
}
if(
!(editText.length()>=2&&editText.length()您可能可以使用正则表达式
但是,否则,您需要遍历字符串以确保没有字符是<'a'或>'z'而不是('''u'或'-')
至于“长度”检查,这可能更具可读性:
(editText.length() < 2 || editText.length() > 22 )
(editText.length()<2 | | editText.length()>22)
<>但我再次鼓励你考虑使用正则表达式:
您的|
或连字符、下划线和逗号命令使用户必须至少包含其中一个字符
您也没有检查有效字符的列表。a-Z?0-9?a-Z?您将希望查看包或迭代字符串并检查每个字符。您的逻辑有问题,请使用&&after=2&&editText.length()我相信您可以在研究我遇到的问题时使用正则表达式
出于您的目的,您可以实现下面的正则表达式
^(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[a-z]).{2,22}$
说明:
实施
在java中,使用:
editText.matches("^[A-Za-z,_\\-]{2,22}$");
查看string matches方法:您尝试过正则表达式吗?只尝试过这个editText.matches(“^[a-zA-Z\-,]{2,22}$”),但它显示了非法字符。。。
^ Start anchor
(?=.*[A-Z].*[A-Z]) Ensure string has uppercase letters.
(?=.*[!@#$&*]) Ensure string has one special case letter.
(?=.*[a-z]) Ensure string has lowercase letters.
.{2,22} Ensure string is of 2 char long and Max of 22.
$ End anchor.
if(editText.matches(^(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[a-z]).{2,22}$))
{
//set error message
}
editText.matches("^[A-Za-z,_\\-]{2,22}$");