我需要正则表达式,只允许拉丁字符,数字和所有其他符号(但不包括空格)
谢谢!
更新:
private boolean loginPassHasCorrectSymbols(String input){
if (input.matches("[A-Za-z0-9\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\>\=\?\@\[\]\{\}\\\^\_\`\~]+$")){
return true;
}
return false;
}
答案 0 :(得分:5)
我希望我能得到它们。
"[A-Za-z0-9\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\>\=\?\@\[\]\{\}\\\\\^\_\`\~]+$"
编辑:我忘记了在Java中,正则表达式也是字符串,因此您需要使用另一个\
实际转义字符串中给出的每个\
。我希望我现在不会错过任何一个。
"[A-Za-z0-9\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\-\\.\\/\\:\\;\\<\\>\\=\\?\\@\\[\\]\\{\\}\\\\\\^\\_\\`\\~]+$"
答案 1 :(得分:1)
一切都不是空白?
"^\S+$"
答案 2 :(得分:0)
我做到了,对我有用。
您可以通过在Edittext上提及空白来阻止它,或者也可以通过实用的方式在editetext.addtextChangeListner上对其进行阻止。
1>
android:digits="0,1,2,3,4,5,6,7,8,9,*,qwertzuiopasdfghjklyxcvbnm,_,-"
2>
etNewPassword.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (etNewPassword.getText().toString().contains(" ")) {
etNewPassword.setText(etNewPassword.getText().toString().replace(" ", ""));
int iLength = etNewPassword.getText().toString().length();
etNewPassword.setSelection(iLength);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
让我知道是否有任何问题。
答案 3 :(得分:0)
要查找除空格之外的任何符号,您可以使用此代码。我希望你觉得它有用
public static boolean hasAnySymbolExceptWhitespace(String string){
return Pattern.matches("(?=.*[^a-zA-Z0-9] ).*", string);
}