java - 如何使您的编辑文本字母数字?安卓例子

标签 java android regex validation

<分区>

比如如果用户只输入字母,它会提示用户名必须包含数字,而当用户只输入数字时,它会提示用户名必须包含字母。

这是我的代码,但它不能正常工作。

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]* 但是,第一次检查会解决这个问题,所以它并不是真正必要的。

编辑 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;
}

关于java - 如何使您的编辑文本字母数字?安卓例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45297505/

相关文章:

java - 无法解析导入 javax.servlet.ServletRegistration

java - 每次我打开新类(class)时应用程序都会强制关闭

java - 使用正则表达式根据特殊字符的出现替换字符串片段

regex - R:替换数据框多列中的特殊字符

java - 全局对象的成员变量也应该设为全局吗?

在网格中显示xlsx文件内容的j​​ava代码

android - Meteor android 构建说 "Application not installed"

仅允许正数的 Javascript 正则表达式

java - 如何使用 Java 将 FTPFIle 转换为 File?

android - 在可空接收器类型的 arraylist 上只允许安全或非空断言调用