Computer >> Máy Tính >  >> Lập trình >> Java

Biểu thức chính quy cho số thập lục phân lớn hơn 10 và phải có độ dài chẵn trong java.


Sau đây là biểu thức chính quy để khớp số thập lục phân lớn hơn 10 với độ dài chẵn -

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

Ở đâu,

  • ^ - Phù hợp với đầu câu.

  • (? =. {10,255} $) - Chuỗi kết thúc bằng các ký tự có từ 10 đến 255.

  • \ p {XDigit} {2} - Hai ký tự thập lục phân.

  • (?:\ p {XDigit} {2}) * - 0 hoặc nhiều chuỗi ký tự thập lục phân kép.

  • $ - Nối cuối câu.

Ví dụ 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("Enter a hexa-decimal number: ");
         nums[i] = sc.nextLine();
      }
      //Regular expression to accept English alphabet
      String regex = "^(?=.{10,255}$)(?:0x)?\\p{XDigit}{2}(?:\\p{XDigit}{2})*$";
      //Creating a pattern object
      Pattern pattern = Pattern.compile(regex);
      for (String hex : nums) {
         //Creating a Matcher object
         Matcher matcher = pattern.matcher(hex);
         if(matcher.find()) {
            System.out.println(hex+" is valid");
         }else {
            System.out.println(hex+" is not valid");
         }
      }
   }
}

Đầu ra

Enter a hexa-decimal number:
0x1234567890
Enter a hexa-decimal number:
123456789
Enter a hexa-decimal number:
123456789012
Enter a hexa-decimal number:
sfdgdf35364
Enter a hexa-decimal number:
$@%#BV#*
0x1234567890 is valid
123456789 is not valid
123456789012 is valid
sfdgdf35364 is not valid
$@%#BV#* is not valid

Ví dụ 2

import java.util.Scanner;
public class JavaExample {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter a hexa-decimal number: ");
      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("Given number is valid");
      }else {
         System.out.println("Given number is not valid");
      }
   }
}

Đầu ra 1

Enter your name:
0x1234567890
Given name is valid

Đầu ra 2

Enter a hexa-decimal number:
024587545
Given number is not valid