我正在尝试测试我的String是否包含字符(a-z)(A-Z)和数字(0-9)
package testing;
import java.io.*;
import java.security.*;
import javax.xml.bind.DatatypeConverter;
import java.lang.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
public class Testing extends JPanel
{
public static void main(String[] args)
{
String foo = "abc1";
if (foo.matches(".*[0-9].*") && foo.matches(".*[A-Z].*") && foo.matches(".*[a-z].*"))
{
//contain letters and numbers only
System.out.println("Foo");
}
}
}
我希望打印出 Foo ,但我的正则表达式似乎有问题。有人可以帮我吗 ??
由于
答案 0 :(得分:2)
变化
foo.matches(".*[0-9].*") && foo.matches(".*[A-Z].*") && foo.matches(".*[a-z].*")
到
foo.matches(".*[0-9].*") && (foo.matches(".*[A-Z].*") || foo.matches(".*[a-z].*"))
答案 1 :(得分:1)
您的问题是foo.matches(".*[A-Z].*")
将返回false
,因为foo = "abc1"
中没有大写字母。
答案 2 :(得分:1)
foo.matches(".*([0-9]+).*") && foo.matches(".*([a-zA-Z]+).*")
答案 3 :(得分:0)
以下内容将识别一个正则表达式中的匹配项:
foo.matches(".*([0-9].*[a-zA-Z])|([a-zA-Z].*[0-9]).*")
答案 4 :(得分:0)
您可以使用单个表达式而不是多个表达式,如下所示 -
if (foo.matches("(?=.*[a-zA-Z])(?=.*[0-9]).*")) {
//...
这将确保foo
至少包含一个字母(较低或大写)和至少一个数字。
答案 5 :(得分:-1)
请尝试以下Regex for Alphanumeric ...
foo.matches("\\w.*")
或
foo.matches("\\w+");