Java-Regex要进行值验证

Java-Regex要进行值验证,java,regex,Java,Regex,我试图泛化regexjava,就像我给出值和模式一样,如果给定值与给定模式匹配,那么方法应该返回true或false,否则返回false 下面是我用简单字母数字试过的方法 import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatches { public static boolean isValidInput(String value, String pattern) {

我试图泛化regexjava,就像我给出值和模式一样,如果给定值与给定模式匹配,那么方法应该返回true或false
,否则返回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");
        }
    }
}
但我输入错误,它仍然打印出真实的

我在这里犯了什么错误


感谢您的投入和宝贵的时间:)

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

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

String pattern = "^(?!^[0-9]+$)(?!^[a-zA-Z]+$)[a-zA-Z0-9]+$";
  • (?!^[0-9]+$)
    :这确保字符串不仅仅是数字的组合
  • (?!^[a-zA-Z]+$)
    :这确保字符串不仅仅是字母的组合
  • [a-zA-Z0-9]*
    :这匹配字母和数字的组合

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

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

String pattern = "^(?!^[0-9]+$)(?!^[a-zA-Z]+$)[a-zA-Z0-9]+$";
  • (?!^[0-9]+$)
    :这确保字符串不仅仅是数字的组合
  • (?!^[a-zA-Z]+$)
    :这确保字符串不仅仅是字母的组合
  • [a-zA-Z0-9]*
    :这匹配字母和数字的组合

我相信这种基于前瞻的正则表达式应该适合您:

String pattern = "^(?=.*?[A-Za-z])(?=.*?[0-9])[a-zA-Z0-9]+$";
这可确保:

  • 输入中至少有一个字母字符
  • 输入中至少有一个数字
  • 输入仅由字母数字组成

  • 我相信这种基于前瞻的regex应该适合您:

    String pattern = "^(?=.*?[A-Za-z])(?=.*?[0-9])[a-zA-Z0-9]+$";
    
    这可确保:

  • 输入中至少有一个字母字符
  • 输入中至少有一个数字
  • 输入仅由字母数字组成

  • 所以你只希望数字为真?45645是字母数字并且匹配模式你的意思是正则表达式应该同时需要字母和数字字符吗?所以你只希望数字为真?45645是字母数字并且匹配模式你的意思是正则表达式应该同时需要字母和数字字符吗?只有在我没有给出数字Ex:sniffer将打印字母数字Hanks作为答案,如果值仅包含字符串,则应仅接受字母数字,否则应返回false,反之亦然,如果我不提供数字,则仍将接受字符串Ex:sniffer将打印字母数字Hanks作为答案,如果值仅包含字符串,则它应仅接受字母数字,否则它应返回false,反之亦然