ต่อไปนี้คือนิพจน์ทั่วไปที่จะจับคู่เลขฐานสิบหกที่มากกว่า 10 ที่มีความยาวคู่ -
^(?=.{10,255}$)(?:0x)?\p{XDigit}{2}(?:\p{XDigit}{2})*$
ที่ไหน
-
^ − จับคู่จุดเริ่มต้นของประโยค
-
(?=.{10,255}$) − สตริงที่ลงท้ายด้วยอักขระตั้งแต่ 10 ถึง 255
-
\p{XDigit}{2} − เลขฐานสิบหกสองตัว
-
(?:\p{XDigit}{2})* − 0 ลำดับขึ้นไปของอักขระฐานสิบหกคู่
-
$ − จับคู่ส่วนท้ายของประโยค
ตัวอย่างที่ 1
นำเข้า java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern; คลาสสาธารณะ JavaExample51 { โมฆะสาธารณะหลัก (สตริง [] args) { Scanner sc =สแกนเนอร์ใหม่ (ระบบ .ใน); สตริง nums[] =สตริงใหม่[5]; for(int i=0; iผลลัพธ์
ป้อนเลขฐานสิบหก:0x1234567890ป้อนเลขฐานสิบหก:123456789ป้อนเลขฐานสิบหก:123456789012ป้อนเลขฐานสิบหก:sfdgdf35364ป้อนเลขฐานสิบหก:$@%#BV#*0x1234567890ไม่ถูกต้อง123456 valid123456789012 is validsfdgdf35364 is not valid$@%#BV#* is not validตัวอย่างที่ 2
<ก่อน> นำเข้า java.util.Scanner; JavaExample คลาสสาธารณะ { โมฆะคงที่สาธารณะหลัก (สตริง [] args) { Scanner sc =สแกนเนอร์ใหม่ (System.in); System.out.println("ป้อนเลขฐานสิบหก:"); ชื่อสตริง =sc.nextLine(); สตริง regex ="^(?=.{10,255}$)(?:0x)?\\p{XDigit}{2}(?:\\p{XDigit}{2})*$"; ผลลัพธ์บูลีน =name.matches (regex); if(ผลลัพธ์) { System.out.println("หมายเลขที่ระบุถูกต้อง"); } อื่น { System.out.println ("หมายเลขที่ระบุไม่ถูกต้อง"); } }}
ผลลัพธ์ 1
ป้อนชื่อของคุณ:0x1234567890ชื่อที่ถูกต้อง
ผลลัพธ์ 2
ป้อนเลขฐานสิบหก:024587545ตัวเลขที่ระบุไม่ถูกต้อง