就像用戶只輸入字母一樣,它會抱怨用戶名必須包含數字,而當用戶只輸入數字時,會抱怨用戶名必須包含字母。如何讓你的編輯文字字母數字? Android示例
這是我的代碼,但它不能正常工作。
if(!username.matches("[a-zA-Z0-9]+")){
Toast.makeText(this, "Username must be alphanumeric", Toast.LENGTH_SHORT).show();
return;
}
就像用戶只輸入字母一樣,它會抱怨用戶名必須包含數字,而當用戶只輸入數字時,會抱怨用戶名必須包含字母。如何讓你的編輯文字字母數字? Android示例
這是我的代碼,但它不能正常工作。
if(!username.matches("[a-zA-Z0-9]+")){
Toast.makeText(this, "Username must be alphanumeric", Toast.LENGTH_SHORT).show();
return;
}
你可以主要檢查後,檢查它們分別
if(!username.matches("[a-zA-Z0-9]+")){
Toast.makeText(this, "Username must be alphanumeric", Toast.LENGTH_SHORT).show();
return;
}
if(!username.matches("^.*[0-9].*$")){
Toast.makeText(this, "it should contain numbers", Toast.LENGTH_SHORT).show();
return;
}
if(!username.matches("^.*[a-zA-Z].*$")){
Toast.makeText(this, "it should contain letters", Toast.LENGTH_SHORT).show();
return;
}
編輯:
要打破正則表達式:
^.*[0-9].*$
- > ^
< - 字符串
$
< - 字符串
.*
匹配任何(也可以匹配空字符串)
[0-9]
匹配一些
你也可以但是[a-zA-Z0-9]*
取代.*
,第一次檢查將採取關心這一點,所以它不是真的有必要。
EDIT 2
另一種方法是檢查它是否只包含字母或數字:我喜歡這一個作爲其更加簡化,但它是必須做的第一檢查
if(!username.matches("[a-zA-Z0-9]+")){
Toast.makeText(this, "Username must be alphanumeric", Toast.LENGTH_SHORT).show();
return;
}
if(username.matches("[a-zA-Z]+")){ // only contains letters
Toast.makeText(this, "it should contain numbers", Toast.LENGTH_SHORT).show();
return;
}
if(username.matches("[0-9]+")){ //only contains numbers
Toast.makeText(this, "it should contain letters", Toast.LENGTH_SHORT).show();
return;
}
嘗試這個用戶Editext屬性android:digits
這樣你就可以限制用戶進入只允許性格特徵
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:digits="ABCDEFGHIJKLMNOPQRSTUVWX1Z1234567890abcdefghijklmnopqrstuvwxyz "/>
謝謝你,我的好先生! –
通過以下方式與這些符號有什麼區別...?我有點困惑...(^。* []。* $) –
@ChristianBringino請檢查編輯2,它是一個更好的解決方案。 – nafas