Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何编写这种情况下的if条件?_Java_If Statement - Fatal编程技术网

Java 如何编写这种情况下的if条件?

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 }

我需要为密码字段设置一个错误,条件是“只允许2~22个字符和符号”

但我有点被困在这里了

以下是我到目前为止得到的信息:

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}$");