如何测试String是否包含字母和数字

Luc*_*cky 12 java regex

我需要一个能满足这两个条件的正则表达式.

只有当String包含AZ和0-9时,它才会给我真实.

这是我尝试过的:

if PNo[0].matches("^[A-Z0-9]+$")

这是行不通的.

nha*_*tdh 21

我怀疑下面的正则表达式会因为环顾四周而减慢,但无论如何都应该可行:

.matches("^(?=.*[A-Z])(?=.*[0-9])[A-Z0-9]+$")
Run Code Online (Sandbox Code Playgroud)

正则表达式断言(?=.*[A-Z])字符串中某处有一个大写字母字符,并断言字符串中有一个数字(?=.*[0-9]),然后检查一切是字母字符还是数字.


jah*_*roy 18

如果使用两个单独的正则表达式,则更容易编写和读取:

String s  =  "blah-FOO-test-1-2-3";

String numRegex   = ".*[0-9].*";
String alphaRegex = ".*[A-Z].*";

if (s.matches(numRegex) && s.matches(alphaRegex)) {
    System.out.println("Valid: " + input);
}
Run Code Online (Sandbox Code Playgroud)

更好的是,写一个方法:

public boolean isValid(String s) {
    String n = ".*[0-9].*";
    String a = ".*[A-Z].*";
    return s.matches(n) && s.matches(a);
}
Run Code Online (Sandbox Code Playgroud)


das*_*ght 7

字母可以在数字之前或之后,因此该表达式应该起作用:

(([A-Z].*[0-9])|([0-9].*[A-Z]))
Run Code Online (Sandbox Code Playgroud)

以下是使用此表达式的代码示例:

Pattern p = Pattern.compile("(([A-Z].*[0-9])|([0-9].*[A-Z]))");
Matcher m = p.matcher("AXD123");
boolean b = m.find();
System.out.println(b);
Run Code Online (Sandbox Code Playgroud)


Fan*_*ing 7

这是给你的正则表达式

基本:

匹配当前字符串行: .

匹配 0 或任意数量的任何字符: *

匹配当前行中的任何内容: .*

匹配字符集(范围)中的任何字符: [start-end]

匹配一组正则表达式之一: (regex1|regex2|regex3)

请注意,开始和结束来自 ASCII 顺序,开始必须在结束之前。例如你可以做[0-Z],但不能[Z-0]。这是供您参考的 ASCII 图表 在此处输入图片说明

根据正则表达式检查字符串

只需致电 yourString.matches(theRegexAsString)

检查字符串是否包含字母:

检查是否有字母: yourString.matches(".*[a-zA-Z].*")

检查是否有小写字母: yourString.matches(".*[a-z].*")

检查是否有大写字母: yourString.matches(".*[A-Z].*")

检查字符串是否包含数字:

yourString.matches(".*[0-9].*")

检查字符串是否同时包含数字和字母:

最简单的方法是用字母和数字匹配两次

yourString.matches(".*[a-zA-Z].*") && yourString.matches(".*[0-9].*")

如果您更喜欢将所有内容匹配在一起,则正则表达式将类似于:匹配在某个地方有一个字符的字符串,然后在任何位置都有一个数字,或者相反。所以你的正则表达式将是:

yourString.matches(".*([a-zA-Z].*[0-9]|[0-9].*[a-zA-Z]).*")

额外的正则表达式供您参考:

检查字符串是否以字母开头

yourString.matches("[a-zA-Z].*")

检查字符串是否以数字结尾

yourString.matches(".*[0-9]")


vbe*_*nar 5

这应该可以解决您的问题:

^([A-Z]+[0-9][A-Z0-9]*)|([0-9]+[A-Z][A-Z0-9]*)$
Run Code Online (Sandbox Code Playgroud)

但它是不可读的。我建议首先使用“^[A-Z0-9]+$”检查输入,然后使用“[AZ]”检查以确保它至少包含一个字母,然后使用“[0-9]”检查以确保它至少包含一位数字。通过这种方式,您可以轻松添加新的限制,并且代码将保持可读性。