java regex查找字符串中的所有空格

时间:2017-09-28 20:43:26

标签: java android regex

我已经看到许多关于正则表达式的建议,以找到字符串中的空格,这些空格到目前为止都没有。是的,使用for for循环遍历字符串的概念将起作用。我真的想学习如何用正则表达式和模式匹配器做到这一点!我的问题是我需要添加到我的正则表达式字符串的内容和位置,以便返回FALSE?下面的代码我添加了许多(\\ s)的化身无济于事。我不想删除空格。

我测试了建议作为重复的代码,它不起作用,请参阅评论中建议的链接

String tstr = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*?&])[A-Za-z\\d$@$!%*?&]";

String astr = etPW.getText().toString().trim();
Pattern regex = Pattern.compile(tstr);
Matcher regexMatcher = regex.matcher(astr);

boolean foundMatch = regexMatcher.find();

if(foundMatch == false){
    Toast.makeText( MainActivity.this, "Password must have one Numeric Value\n"
      + "\nOne Upper & Lower Case Letters\n"
      + "\nOne Special Character $ @ ! % * ? &", Toast.LENGTH_LONG ).show();
    //etPW.setText("");
    //etCPW.setText("");
    // Two lines of code above are optional
    // Also by design these fields can be set to input type Password in the XML file
    etPW.requestFocus();

    return ;
}

1 个答案:

答案 0 :(得分:2)

您可以使用否定前瞻来检查空格:

^(?!.* )

^ - 在字符串的开头开始匹配。

(?! - 开始一个负向的前瞻组(括号内的模式不能接下来。

.* - 任意次数的非换行字符,后跟空格。

) - 关闭否定前瞻组。

结合完整的正则表达式模式(也清除了一点以消除冗余):

^(?!.* )(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[!@$%&*?])[A-Za-z\\d!@$%&*?]+