如果用户只输入字母,就会抱怨用户名必须包含数字,当用户只输入数字时,会抱怨用户名必须包含字母。
这是我的代码,但它无法正常工作。
if(!username.matches("[a-zA-Z0-9]+")){
Toast.makeText(this, "Username must be alphanumeric", Toast.LENGTH_SHORT).show();
return;
}
答案 0 :(得分:6)
你可以在主要检查后单独检查它们
curl -X POST \
https://api.sendgrid.com/v3/mail/send \
-H 'authorization: Bearer MYAPIKEY' \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-d '{
"personalizations": [
{
"to": [
{
"email": "testemail@test.com"
}
],
}
],
"from": {
"email": "testemail@test.com"
},
"content": [
{
"type": "text/plain",
"value": "Hello, World!"
}
]
}
修改强>
打破正则表达式:
{
"errors": [
{
"message": "The subject is required. You can get around this requirement if you use a template with a subject defined or if every personalization has a subject defined.",
"field": "subject",
"help": "http://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/errors.html#message.subject"
}
]
}
- >
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]
但是,第一次检查会照顾到这一点,因此不一定非必要。
编辑2
另一种方法是检查它是否只包含字母或数字:我更喜欢这个更简化,但是必须先进行第一次检查
.*
答案 1 :(得分:0)
尝试此用户Editext属性android:digits
,这样您就可以限制用户只输入允许的字符
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:digits="ABCDEFGHIJKLMNOPQRSTUVWX1Z1234567890abcdefghijklmnopqrstuvwxyz "/>