我正在尝试推广Regex-java,就像我提供值和模式一样,该方法应返回true或false if the given value matches the given pattern - TRUE else FALSE

以下是我尝试使用简单字母数字的方法

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexMatches {
    public static boolean isValidInput(String value, String pattern) {
        boolean isValid = false;
        Pattern walletInputPattern = Pattern.compile(pattern);
        Matcher walletMatcher = walletInputPattern.matcher(value);
        if (walletMatcher.matches()) {
            isValid = true;
        }
        return isValid;
    }

    public static void main(String args[]) {
        String pattern = "^[a-zA-Z0-9]*$";
        String inputValue = "45645";
        if (isValidInput(inputValue, pattern)) {
            System.out.println("Alphanumeric");
        } else {
            System.out.println("OOPS");
        }
    }
}


但我输入了错误,仍然显示TRUE。

我在这里犯了什么错误?

感谢您的投入,并花费您宝贵的时间:)

最佳答案

这是正确的结果,因为45645确实是字母数字值。

如果要确保该值是数字和字母的组合,则需要一个不同的表达式:

String pattern = "^(?!^[0-9]+$)(?!^[a-zA-Z]+$)[a-zA-Z0-9]+$";



(?!^[0-9]+$):这可确保字符串不只是数字的组合。
(?!^[a-zA-Z]+$):这可以确保字符串不只是字母的组合。
[a-zA-Z0-9]*:这匹配字母和数字的组合。

07-24 09:36
查看更多