用于检查字母数字字符串的正则表达式不起作用

时间:2014-05-07 03:42:25

标签: java regex

我正在尝试测试我的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 ,但我的正则表达式似乎有问题。有人可以帮我吗 ??

由于

6 个答案:

答案 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+");