แนวคิดพื้นฐาน
นิพจน์ทั่วไปเป็นรูปแบบข้อความที่มีอักขระปกติ (ตัวอย่างเช่นตัวอักษรระหว่าง A ถึง Z) และอักขระพิเศษ (เรียกว่า "Metachars") รูปแบบอธิบายหนึ่งหรือมากกว่านั้นเพื่อให้ตรงกับเมื่อค้นหาข้อความ
ก่อนอื่นแนะนำให้มีการแสดงออกทางนิพจน์ทั่วไปหลายตัว
debuggex: https://www.debuggex.com/
pyregex: http://www.pyregex.com/
regexper: http://www.regexper.com/
นิพจน์ทั่วไปคือการดำเนินการค้นหาและการเปลี่ยนสตริง นิพจน์ทั่วไปจะใช้กันอย่างแพร่หลายในตัวแก้ไขข้อความเช่นการแสดงออกปกติจะใช้สำหรับ:
[คัดลอก] ตรวจสอบว่าข้อความมีคำเฉพาะที่ระบุหรือไม่
ค้นหาตำแหน่งที่คำพูดที่ตรงกันอยู่ในข้อความ
แยกข้อมูลจากข้อความเช่น: Substrings of Strings
แก้ไขข้อความ
หมายเหตุ: การแสดงออกปกติมักใช้สำหรับงานสองงาน: 1. การตรวจสอบ, 2. ค้นหา/แทนที่ เมื่อใช้สำหรับการตรวจสอบมักจะจำเป็นต้องเพิ่ม ^ และ $ ก่อนและหลังเพื่อให้ตรงกับสตริงทั้งหมดที่จะตรวจสอบ ไม่ว่าจะเพิ่มข้อ จำกัด นี้เมื่อค้นหา/เปลี่ยนขึ้นอยู่กับข้อกำหนดการค้นหา นอกจากนี้ยังเป็นไปได้ที่จะเพิ่ม /b แทน ^ และ $ ก่อนและหลัง ยกเว้นบางส่วนไม่มีการเพิ่มข้อ จำกัด ก่อนและหลังนิพจน์ทั่วไปทั่วไปที่ระบุไว้ในตารางนี้ โปรดจัดการกับพวกเขาด้วยตัวเองตามต้องการ
ลำดับความสำคัญ
หลังจากสร้างนิพจน์ทั่วไปคุณสามารถประเมินเช่นการแสดงออกทางคณิตศาสตร์นั่นคือคุณสามารถประเมินจากซ้ายไปขวาและลำดับความสำคัญ ตารางต่อไปนี้แสดงลำดับความสำคัญของตัวดำเนินการนิพจน์ทั่วไปจากลำดับความสำคัญสูงสุดถึงลำดับความสำคัญต่ำสุด:
| ผู้ดำเนินการ | อธิบาย |
|---|---|
| - | สัญลักษณ์หลบหนี |
| - | วงเล็บปีกกาและวงเล็บเหลี่ยม |
| *, +,?, {n}, {n,}, {n, m} | ผู้คัดเลือก |
| ^, $, /anymetacharacter | ตำแหน่งและคำสั่งซื้อ |
สร้างนิพจน์ทั่วไป
วิธีการสร้างนิพจน์ทั่วไปนั้นเหมือนกับวิธีการสร้างนิพจน์ทางคณิตศาสตร์ นั่นคือใช้ metacharacters และตัวดำเนินการหลายตัวเพื่อรวมการแสดงออกเล็ก ๆ เพื่อสร้างนิพจน์ที่ใหญ่ขึ้น
การแสดงออกปกติสามารถสร้างได้โดยการวางส่วนประกอบต่าง ๆ ของรูปแบบการแสดงออกระหว่างคู่ของตัวคั่น
สำหรับ JScript ตัวคั่นเป็นอักขระ Slashes (/) ไปข้างหน้า ตัวอย่างเช่น:
/การแสดงออก/
สำหรับ VBScript จะใช้คำพูดคู่ ("") เพื่อกำหนดขอบเขตของนิพจน์ทั่วไป ตัวอย่างเช่น:
การคัดลอกรหัสมีดังนี้:
"การแสดงออก"
ดูตัวอย่าง
การคัดลอกรหัสมีดังนี้:
// จับคู่ว่าบัญชีนั้นถูกกฎหมายหรือไม่ (เริ่มต้นด้วยตัวอักษรได้รับอนุญาต 5-16 ไบต์
var re = ใหม่ regexp ("^[a-za-z] [a-za-z0-9 _] {5,19} $");
if (re.test (aaaa)) {
การแจ้งเตือน ("รูปแบบที่ถูกต้อง");
}อื่น{
การแจ้งเตือน ("ข้อผิดพลาดรูปแบบ");
-
ส่วนประกอบของการแสดงออกปกติอาจเป็นอักขระตัวเดียวชุดของอักขระช่วงของตัวละครตัวเลือกระหว่างตัวละครหรือการรวมกันของส่วนประกอบเหล่านี้ทั้งหมด
การแสดงออกปกติที่ใช้กันทั่วไป
นิพจน์ทั่วไปที่ตรงกับอักขระภาษาจีน: [/U4E00-/U9FA5]
ความคิดเห็น: การจับคู่ภาษาจีนเป็นเรื่องปวดหัวจริงๆมันง่ายที่จะทำกับนิพจน์นี้
จับคู่อักขระสองไบต์ (รวมถึงอักขระภาษาจีน): [^/x00-/xff]
ความคิดเห็น: สามารถใช้ในการคำนวณความยาวของสตริง (เครื่องวัดความยาวอักขระสองไบต์ 2, เครื่องวัดอักขระ ASCII 1)
นิพจน์ปกติที่จับคู่บรรทัดว่าง:/n/s*/r
ความคิดเห็น: สามารถใช้เพื่อลบเส้นเปล่า
การจับคู่นิพจน์ปกติแท็ก HTML: <(/s*?) [^>]*>.*? <// 1> | <.*? -
ความคิดเห็น: เวอร์ชันที่หมุนเวียนออนไลน์นั้นแย่เกินไปและด้านบนสามารถจับคู่ส่วนได้เท่านั้นและยังไม่มีอำนาจที่จะใช้เครื่องหมายซ้อนที่ซับซ้อน
นิพจน์ปกติที่ตรงกับตัวละครเริ่มต้นและจุดสิ้นสุดของช่องว่าง: ^/s*|/s*$
ความคิดเห็น: สามารถใช้เพื่อลบอักขระช่องว่างได้ที่จุดเริ่มต้นและจุดสิ้นสุดของบรรทัด (รวมถึงช่องว่างแท็บการแบ่งหน้า ฯลฯ ) การแสดงออกที่มีประโยชน์มาก
นิพจน์ปกติที่ตรงกับที่อยู่อีเมล: /w+( [[[-+.lam/w+)@/w+( [[-...hind/w+)*/./w+( [-...lik/w+)*
ความคิดเห็น: มันใช้งานได้จริงมากเมื่อตรวจสอบแบบฟอร์ม
Expression ที่จับคู่ปกติ URL: [A-ZA-Z]+: // [^/s]*
ความคิดเห็น: ฟังก์ชั่นของเวอร์ชันที่หมุนเวียนออนไลน์มี จำกัด มากและโดยทั่วไปสามารถตอบสนองความต้องการได้
ตรงกับว่าบัญชีนั้นถูกกฎหมายหรือไม่ (เริ่มต้นด้วยตัวอักษรได้รับอนุญาต 5-16 ไบต์อนุญาตให้มีการขีดเส้นใต้และตัวอักษรและตัวเลข): ^[a-za-z] [A-za-Z0-9 _] {4,15} $
ความคิดเห็น: มันใช้งานได้จริงมากเมื่อตรวจสอบแบบฟอร์ม
จับคู่หมายเลขโทรศัพท์ในประเทศ:/d {3}-/d {8} |/d {4}-/d {7}
ความคิดเห็น: แบบฟอร์มการจับคู่มีดังนี้: 0511-4405222 หรือ 021-8788822
จับคู่หมายเลข qq tencent: [1-9] [0-9] {4,}
ความคิดเห็น: หมายเลข Tencent QQ เริ่มต้นที่ 10,000
จับคู่รหัสไปรษณีย์ภาษาจีน: [1-9]/d {5} (?!/d)
ความคิดเห็น: รหัสไปรษณีย์ของจีนคือ 6 หลัก
Match Card: /D {15} | /d {18}
ความคิดเห็น: บัตรประจำตัวของจีนคือ 15 หรือ 18 หลัก
จับคู่ที่อยู่ IP: /d+/./d+/./d+/./d+
ความคิดเห็น: มันมีประโยชน์เมื่อแยกที่อยู่ IP
จับคู่หมายเลขเฉพาะ
[Copy] ^[1-9]/d*$ // จับคู่จำนวนเต็มบวก
^-[1-9]/d*$ // จับคู่จำนวนเต็มติดลบ
^-? [1-9]/d*$ // จับคู่จำนวนเต็ม
^[1-9]/d*| 0 $ // จับคู่จำนวนเต็มที่ไม่เป็นลบ (จำนวนเต็มบวก + 0)
^-[1-9]/d*| 0 $ // จับคู่จำนวนเต็มที่ไม่ใช่บวก (จำนวนเต็มลบ + 0)
^[1-9]/d*/./d*| 0 /./ d*[1-9]/d*$ // จับคู่หมายเลขลอยบวก
^-([1-9]/d*/./d*| 0 /./ d*[1-9]/d*) $ // จับคู่หมายเลขลอยลบ
^-? ([1-9]/d*/./d*| 0 /./ d*[1-9]/d*| 0?/. 0+ | 0) $ // หมายเลขจุดลอยตัว
^[1-9]/d*/./d*| 0 /./ d*[1-9]/d*| 0?/. 0+ | 0 $ // จับคู่หมายเลขจุดลอยตัวที่ไม่ใช่ลบ (หมายเลขจุดลอยตัวบวก + 0)
^(-([[1-9]/d*/./d*| 0 /./ d*[1-9]/d*)) | 0?/. 0+ | 0 $ // จับคู่หมายเลขจุดลอยตัวที่ไม่ใช่บวก (หมายเลขจุดลอยลบ + 0)
ความคิดเห็น: มันมีประโยชน์เมื่อประมวลผลข้อมูลจำนวนมากและระมัดระวังในการแก้ไขเมื่อนำไปใช้ในรายละเอียด
จับคู่สตริงเฉพาะ
[COPY]^[A-ZA-Z]+$ // จับคู่สตริงที่ประกอบด้วยตัวอักษรภาษาอังกฤษ 26 ตัว
^[AZ]+$ // จับคู่สตริงที่ประกอบด้วยตัวอักษรภาษาอังกฤษ 26 ตัว
^[az]+$ // จับคู่สตริงที่ประกอบด้วยตัวพิมพ์เล็ก 26 ตัวอักษรภาษาอังกฤษ
^[a-za-z0-9]+$ // จับคู่สตริงที่ประกอบด้วยตัวเลขและตัวอักษรภาษาอังกฤษ 26 ตัว
^/w+$ // จับคู่สตริงที่ประกอบด้วยตัวเลข 26 ตัวอักษรภาษาอังกฤษหรือขีดล่าง 26 ตัวอักษรภาษาอังกฤษ
ความคิดเห็น: บางส่วนของนิพจน์พื้นฐานและที่ใช้กันมากที่สุดที่ใช้กันมากที่สุด
แผนที่ใจ