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