Java 正则表达式将验证十六进制值限制在0000到7F7F之间

Java 正则表达式将验证十六进制值限制在0000到7F7F之间,java,regex,validation,hex,Java,Regex,Validation,Hex,在下面的代码中,我正在验证字符串是否为有效的十六进制 是否有方法验证十六进制值限制在0000和7F7F之间 value.matches("[0-9a-fA-F]+") 您只需将值转换为int,然后使用常规的运算符: public class Main { public static void main(String[] args) { final int LOW = 0x0000; final int HIGH = 0x7F7F; S

在下面的代码中,我正在验证字符串是否为有效的十六进制 是否有方法验证十六进制值限制在0000和7F7F之间

value.matches("[0-9a-fA-F]+")

您只需将值转换为int,然后使用常规的
运算符:

public class Main {

    public static void main(String[] args) {

        final int LOW = 0x0000;
        final int HIGH = 0x7F7F;
        String sample1 = "A1A1";
        String sample2 = "2ABC";

        int hex1 = Integer.decode("0x"+sample1);
        System.out.println(LOW < hex1 && hex1 < HIGH);
        int hex2 = Integer.decode("0x"+sample2);
        System.out.println(LOW < hex2 && hex2 < HIGH);
    }
}
公共类主{
公共静态void main(字符串[]args){
最终整数下限=0x0000;
最终int高=0x7F7F;
字符串sample1=“A1A1”;
字符串sample2=“2ABC”;
int hex1=整数。解码(“0x”+样本1);
System.out.println(低
输出:


真的


您只需将值转换为int,然后使用常规的
运算符:

public class Main {

    public static void main(String[] args) {

        final int LOW = 0x0000;
        final int HIGH = 0x7F7F;
        String sample1 = "A1A1";
        String sample2 = "2ABC";

        int hex1 = Integer.decode("0x"+sample1);
        System.out.println(LOW < hex1 && hex1 < HIGH);
        int hex2 = Integer.decode("0x"+sample2);
        System.out.println(LOW < hex2 && hex2 < HIGH);
    }
}
公共类主{
公共静态void main(字符串[]args){
最终整数下限=0x0000;
最终int高=0x7F7F;
字符串sample1=“A1A1”;
字符串sample2=“2ABC”;
int hex1=整数。解码(“0x”+样本1);
System.out.println(低
输出:


真的


一旦知道该值是有效的十六进制数,就可以使用一些。如果您不打算解析数字,这是一个更有效的选择

value.matches("(?i)[0-6]...|7[0-9A-E]..|7F[0-7].");

一旦知道该值是有效的十六进制数,就可以使用一些。如果您不打算解析数字,这是一个更有效的选择

value.matches("(?i)[0-6]...|7[0-9A-E]..|7F[0-7].");

正则表达式不会做数学。我完全不明白你为什么要这样做,而不是简单地解析和检查整数范围。这个字符类碰巧也存在,因为
\p{XDigit}
是正则表达式唯一的选项(例如,这是API),还是任意代码都可以?正则表达式不能做数学运算。我完全无法理解您为什么要这样做,而不是简单地解析和检查整数范围。该字符类碰巧也存在,因为
\p{XDigit}
是正则表达式的唯一选项(例如,它是API),还是任意代码都可以?