我已經看到了很多關於正則表達式的建議,以找到字符串中的空格,但目前爲止沒有任何工作。是的,循環使用下一個循環的字符串的概念將起作用。我真的很想學習如何用正則表達式和模式匹配器來做到這一點!我的問題是什麼,我需要添加到我的正則表達式字符串,所以它會返回FALSE?下面的代碼我已經添加了許多(\\)的化身無濟於事。我不想刪除空格。java正則表達式找到字符串中的所有空格
我測試的代碼建議作爲一個重複,並沒有看到工作中的鏈接評論
String tstr = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[[email protected]$!%*?&])[A-Za-z\\[email protected]$!%*?&]";
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 ;
}
什麼是您的密碼要求?爲什麼在字符類中重複兩次'$'?我已經多次看到 - 爲什麼要複製一些正則表達式而不真正理解它在做什麼?看起來你複製了它的一部分。 –
@WiktorStribiżew我從正則表達式測試站點複製了這段代碼,所以我同意我可能完全不瞭解代碼。要求是沒有白色空間,包括一個大寫字母和一個小寫字母和數字是允許的,而老學校的一個特殊字符。我會測試在字符類中刪除兩次$ Dupes已被刪除THANKS –
雙'$'沒有造成任何傷害,這只是不好的風格。您可以嘗試'「(?=。* [az])(?=。* [AZ])(?=。* \\ d)(?=。* [$ @ $!%*?&])\\ S *「'但可以通過'regexMatcher.matches()'使用它。請更新問題以包含實際需求。 –