如何使您的编辑文本字母数字? Android示例

时间:2017-07-25 08:11:28

标签: java android regex validation

如果用户只输入字母,就会抱怨用户名必须包含数字,当用户只输入数字时,会抱怨用户名必须包含字母。

这是我的代码,但它无法正常工作。

if(!username.matches("[a-zA-Z0-9]+")){
    Toast.makeText(this, "Username must be alphanumeric", Toast.LENGTH_SHORT).show();
    return;
}

2 个答案:

答案 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 "/>