Java 中大于 10 且长度应为偶数的十六进制数的正则表达式。

javaobject oriented programmingprogramming

以下是匹配大于 10 且长度为偶数的十六进制数 − 的正则表达式

^(?=.{10,255}$)(?:0x)?\p{XDigit}{2}(?:\p{XDigit}{2})*$

其中,

  • ^ − 匹配句子的开头。

  • (?=.{10,255}$) −以 10 到 255 个字符结尾的字符串。

  • \p{XDigit}{2 − 两个十六进制字符。

  • (?:\p{XDigit}{2})* − 0 个或更多双十六进制字符序列。

  • $ − 匹配句子结尾。

示例 1

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class JavaExample51 {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      String nums[] = new String[5];
      for(int i=0; i<nums.length; i++){
         System.out.println("输入一个十六进制数:");
         nums[i] = sc.nextLine();
      }
      //接受英文字母的正则表达式
      String regex = "^(?=.{10,255}$)(?:0x)?\p{XDigit}{2}(?:\p{XDigit}{2})*$";
      //创建一个 Pattern 对象
      Pattern pattern = Pattern.compile(regex);
      for (String hex : nums) {
         //创建一个 Matcher 对象
         Matcher matcher = pattern.matcher(hex);
         if(matcher.find()) {
            System.out.println(hex+" 有效");
         }else {
            System.out.println(hex+" 无效");
         }
      }
   }
}

输出

输入一个十六进制数:
0x1234567890
输入一个十六进制数:
123456789
输入一个十六进制数:
123456789012
输入一个十六进制数:
sfdgdf35364
输入一个十六进制数:
$@%#BV#*
0x1234567890 有效
123456789 无效
123456789012 有效
sfdgdf35364 无效
$@%#BV#* 无效

示例 2

import java.util.Scanner;
public class JavaExample {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("输入一个十六进制数:");
      String name = sc.nextLine();
      String regex = "^(?=.{10,255}$)(?:0x)?\p{XDigit}{2}(?:\p{XDigit}{2})*$";
      boolean result = name.matches(regex);
      if(result) {
         System.out.println("给定的数字有效");
      }else {
         System.out.println("Given number is not valid");
      }
   }
}

输出 1

输入您的姓名:
0x1234567890
Given name is valid

输出 2

输入一个十六进制数:
024587545
Given number is not valid

相关文章