วิธีเริ่มต้นใช้งาน VUE3.0 อย่างรวดเร็ว: เข้าสู่การเรียนรู้
คำแนะนำที่เกี่ยวข้อง: บทช่วยสอน JavaScript
( Regular Expression เรียกว่า regexp )
การใช้งาน: ในการพัฒนาโครงการ ฟังก์ชันต่างๆ เช่น การซ่อนตัวเลขที่ระบุของหมายเลขโทรศัพท์มือถือ การรวบรวมข้อมูล การกรองคำที่ละเอียดอ่อน และการตรวจสอบแบบฟอร์ม ทั้งหมดนี้สามารถนำมาใช้ได้โดยใช้นิพจน์ทั่วไป
สาขาที่เกี่ยวข้อง: ในระบบปฏิบัติการ (Unix, Linux ฯลฯ) ภาษาการเขียนโปรแกรม (C, C++, Java, PHP, Python, JavaScript ฯลฯ)
ตัวอย่างเช่น: ใช้การค้นหาข้อความเป็นตัวอย่าง หากคุณพบสตริงที่ตรงกับคุณลักษณะบางอย่าง (เช่น หมายเลขโทรศัพท์มือถือ) ในข้อความจำนวนมาก ให้เขียนคุณลักษณะนี้ตามไวยากรณ์ของนิพจน์ทั่วไปเพื่อสร้าง รูปแบบที่โปรแกรมคอมพิวเตอร์รู้จัก (Pattern) จากนั้นโปรแกรมคอมพิวเตอร์จะจับคู่ข้อความตามรูปแบบนี้เพื่อค้นหาสตริงที่ตรงตามกฎ
ประวัติความเป็นมาของนิพจน์ทั่วไป
รูปแบบการแสดงออกของการแสดงออกปกติ
ในระหว่างการพัฒนา มักจำเป็นต้องค้นหาและจับคู่สตริงที่ระบุตามรูปแบบการจับคู่ปกติ
นอกเหนือจากการดึงค่าที่ระบุในสตริงแล้ว เมธอด match() ในอ็อบเจ็กต์ String ยังสามารถจับคู่เนื้อหาทั้งหมดที่ตรงตามข้อกำหนดในสตริงเป้าหมายตามกฎทั่วไป และบันทึกลงในอาร์เรย์หลังจาก การจับคู่สำเร็จ จะส่งกลับค่าเท็จหากการจับคู่ล้มเหลว
ในแอปพลิเคชัน JavaScript คุณต้องสร้างอ็อบเจ็กต์ปกติก่อนจึงจะใช้นิพจน์ทั่วไป นอกเหนือจากการสร้างตามตัวอักษรที่อธิบายไว้ก่อนหน้านี้แล้ว ยังสามารถสร้างผ่านตัวสร้างของออบเจ็กต์ RegExp ได้ด้วย
เพื่อให้ผู้อ่านเข้าใจการได้มาของวัตถุปกติได้ดีขึ้น จะมีการให้คำอธิบายเปรียบเทียบโดย จับคู่อักขระพิเศษ "^", "$", "*", "." และ "" เป็นตัวอย่าง
โปรดทราบว่า
แม้ว่าอ็อบเจ็กต์ปกติที่สร้างขึ้นโดยวิธีคอนสตรัคเตอร์และเมธอดลิเทอรัลจะเหมือนกันโดยสิ้นเชิงในฟังก์ชัน แต่ก็มีความแตกต่างบางประการในการใช้ไวยากรณ์ รูปแบบเดิมจำเป็นต้องหลีกเครื่องหมายแบ็กสแลช () เมื่อใช้ เมื่อเขียนรูปแบบหลัง ควรวางไว้ภายในตัวคั่น "/" และควรวางแท็ก flags ไว้ด้านนอกตัวคั่นส่วนท้าย
ประโยชน์: การใช้หมวดหมู่อักขระอย่างมีประสิทธิภาพจะทำให้นิพจน์ทั่วไปกระชับและอ่านง่ายขึ้น
ตัวอย่างที่ 1: ตัวอักษรตัวพิมพ์ใหญ่ ตัวอักษรพิมพ์เล็ก และตัวเลขสามารถแสดงได้โดยตรงโดยใช้ "w"
กรณีที่ 2: หากคุณต้องการจับคู่ตัวเลขระหว่าง 0 ถึง 9 คุณสามารถใช้ "d"
เพื่อให้ผู้อ่านเข้าใจการใช้หมวดหมู่อักขระได้ ข้อมูลต่อไปนี้จึงใช้ "." และ "s" เป็นตัวอย่างในการสาธิต
การแสดงชุดอักขระ: "[]" สามารถใช้ชุดอักขระได้
ช่วงอักขระ: เมื่อใช้ร่วมกับยัติภังค์ "-" หมายถึงการจับคู่อักขระภายในช่วงที่ระบุ
อักขระตรงข้าม: เมื่ออักขระเมตา "^" ใช้ร่วมกับ "[]" จะเรียกว่าอักขระตรงข้าม
ไม่อยู่ในช่วงที่กำหนด: "^" ใช้ร่วมกับ "[]" เพื่อจับคู่อักขระที่ไม่อยู่ในช่วงอักขระที่ระบุ
ใช้สตริง 'get好TB6'.match(/pattern/g) เป็นตัวอย่างเพื่อสาธิตการใช้งานทั่วไป
โปรดทราบ
ว่าอักขระ "-" มักจะแสดงถึงอักขระธรรมดาเท่านั้น และ
ใช้เป็นอักขระเมตาเมื่อแสดงช่วงอักขระ
เท่านั้นช่วงที่แสดงด้วยยัติภังค์ "-" เป็นไปตามลำดับการเข้ารหัสอักขระ เช่น "aZ", "za" และ "a-9" ล้วนเป็นช่วงที่ไม่ถูกต้อง
[กรณี] จำกัดเนื้อหาอินพุต
แนวคิดการนำโค้ดไปใช้ :
เขียน HTML ตั้งค่ากล่องข้อความสำหรับปี (ปี) และเดือน (เดือน) และปุ่มสอบถาม
รับวัตถุองค์ประกอบของการดำเนินการและตรวจสอบการส่งแบบฟอร์ม
ตรวจสอบปี รูปแบบปกติ: /^d{4}/ ตรวจสอบเดือน กฎปกติ: / ( ( 0 ? [ 1 − 9 ] ) ∣ ( 1 [ 012 ] ) ) /
กล่องข้อความได้รับการโฟกัสและสีของกล่องพร้อมท์จะถูกลบออก กล่องข้อความสูญเสียโฟกัส ลบช่องว่างที่ปลายทั้งสองด้านของเนื้อหาที่ป้อนเข้า และตรวจสอบความถูกต้อง
การใช้รหัส
<!DOCTYPE html> <html> <หัว> <meta charset="UTF-8"> <title>จำกัดเนื้อหาอินพุต</title> <สไตล์> อินพุต [ประเภท = ข้อความ] {ความกว้าง: 40px; เส้นขอบสี: #bbb; ความสูง: 25px; ขนาดตัวอักษร: 14px; รัศมีเส้นขอบ: 2px; โครงร่าง: 0; เส้นขอบ: #ccc 1px ทึบ; ช่องว่างภายใน: 0 10px; -webkit-transition: box-shadow .5s;margin-bottom: 15px;} อินพุต [ประเภท = ข้อความ]: โฮเวอร์, อินพุต [ประเภท = ข้อความ]: โฟกัส, อินพุต [ประเภท = ส่ง]: โฮเวอร์ {เส้นขอบ: 1px ทึบ # 56b4ef; กล่องเงา: สิ่งที่ใส่เข้าไป 0 1px 3px rgba (0,0,0, .05),0 0 8px rgba(82,168,236,.6); -webkit-transition: box-shadow .5s;} อินพุต::-webkit-input-placeholder {สี: #999; -webkit-transition: color .5s;} อินพุต: โฟกัส ::-webkit-input-placeholder, อินพุต:hover::-webkit-input-placeholder {สี: #c2c2c2; -webkit-transition: color .5s;} อินพุต[type=submit]{height: 30px; width: 80px; พื้นหลัง: #4393C9; border:1px solid #fff;color: #fff;font:14px โดดเด่นยิ่งขึ้น; </สไตล์> </หัว> <ร่างกาย> <แบบฟอร์ม id="แบบฟอร์ม"> ปี<input type="text" name="year"> เดือน<input type="text" name="month"> <ประเภทอินพุต = "ส่ง" ค่า = "แบบสอบถาม"> </แบบฟอร์ม> <p id="ผลลัพธ์"></p> <สคริปต์> ฟังก์ชั่นตรวจสอบปี (obj) { ถ้า (!obj.value.match(/^d{4}$/)) { obj.style.borderColor = 'สีแดง'; result.innerHTML = 'ข้อผิดพลาดในการป้อนข้อมูล ปีแสดงด้วยตัวเลข 4 หลัก'; กลับเท็จ; - result.innerHTML = ''; กลับเป็นจริง; - ฟังก์ชั่นตรวจสอบเดือน (obj) { ถ้า (!obj.value.match(/^((0?[1-9])|(1[012]))$/)) { obj.style.borderColor = 'สีแดง'; result.innerHTML = 'ข้อผิดพลาดในการป้อนข้อมูล เดือนอยู่ระหว่าง 1 ถึง 12'; กลับเท็จ; - result.innerHTML = ''; กลับเป็นจริง; - var form = document.getElementById('form'); // <form> วัตถุองค์ประกอบ var result = document.getElementById('result'); // <p> วัตถุองค์ประกอบ var inputs = document.getElementsByTagName('input'); // <input> การรวบรวมองค์ประกอบ form.onsubmit = function() { ส่งคืนเช็คปี (inputs.year) && checkMonth (inputs.month); - inputs.year.onfocus = ฟังก์ชั่น () { this.style.borderColor = ''; - inputs.month.onfocus = ฟังก์ชั่น () { this.style.borderColor = ''; - ถ้า (!String.prototype.trim) { String.prototype.trim = ฟังก์ชั่น () { กลับ this.replace(/^[suFEFFxA0]+|[suFEFFxA0]+$/g, ''); // uFEFF เครื่องหมายคำสั่งไบต์ xA0 ไม่ตัดช่องว่าง }; - inputs.year.onblur = ฟังก์ชั่น () { this.value = this.value.trim(); ตรวจสอบปี(นี้); - inputs.month.onblur = ฟังก์ชั่น () { this.value = this.value.trim(); ตรวจสอบเดือน(นี้); - </สคริปต์> </ร่างกาย> </html>
: ตรวจสอบว่านิพจน์ทั่วไปตรงกับสตริงที่ระบุหรือไม่
เมื่อการจับคู่สำเร็จ ค่าที่ส่งคืนของเมธอด test() จะเป็น true มิฉะนั้นจะส่งคืน false
การตรวจจับตัวดัดแปลงรูปแบบของวัตถุปกติ
นอกจากนี้ยังมีคุณสมบัติบางอย่างในคลาส RegExp ที่ใช้ในการตรวจจับตัวดัดแปลงรูปแบบที่ใช้โดยวัตถุปกติปัจจุบันและระบุดัชนีเริ่มต้นของการจับคู่ถัดไป
เพื่อให้ผู้อ่านเข้าใจการใช้คุณลักษณะเหล่านี้ได้ดีขึ้น สิ่งต่อไปนี้จึงใช้การจับคู่ช่องว่างเป็นตัวอย่างในการสาธิต
: สามารถส่งคืนตำแหน่งที่สตริงย่อยของรูปแบบที่ระบุปรากฏขึ้นครั้งแรกในสตริง ซึ่งมีประสิทธิภาพมากกว่าเมธอด indexOf()
split() method : ใช้เพื่อแยกสตริงออกเป็นอาร์เรย์สตริงตามตัวคั่นที่ระบุ อาร์เรย์สตริงแยกไม่รวมตัวคั่น
เมื่อมีตัวคั่นมากกว่าหนึ่งตัว จำเป็นต้องกำหนดอ็อบเจ็กต์ปกติเพื่อให้การดำเนินการแยกสตริงเสร็จสมบูรณ์
โปรดทราบว่า
เมื่อสตริงว่างเปล่า เมธอด split() จะส่งคืนอาร์เรย์ "[""]" ที่มีสตริงว่าง หากสตริงและตัวคั่นเป็นสตริงว่างทั้งคู่ อาร์เรย์ว่าง "[] จะถูกส่งคืน "
การตรวจสอบความแข็งแกร่งของรหัส
ผ่านด้วยตนเอง
เงื่อนไขการตรวจสอบความแข็งแกร่งของรหัสผ่าน:
1 ความยาว <6 หลัก ไม่มีความแข็งแกร่งของรหัสผ่าน
②ความยาวคือ >6 ตัวอักษรและประกอบด้วยตัวเลข ตัวอักษร หรืออักขระอื่นๆ อย่างใดอย่างหนึ่ง และระดับความปลอดภัยของรหัสผ่านคือ "ต่ำ"
3.มีความยาว >6 ตัวอักษร และประกอบด้วยตัวเลข ตัวอักษร หรืออักขระอื่นๆ สองประเภท ระดับความปลอดภัยของรหัสผ่านคือ "ปานกลาง"
④ หากมีความยาว >6 ตัวอักษรและมีตัวเลข ตัวอักษร หรืออักขระอื่นๆ สามประเภทขึ้นไป ระดับความปลอดภัยของรหัสผ่านคือ "สูง"
จะถามคำถาม: จับคู่อักขระที่ต่อเนื่องกัน เช่น ตัวเลข 6 หลักติดต่อกัน "458925"
โซลูชันที่ 1: วัตถุปกติ/dddddd/gi
ปัญหา: การซ้ำ "d" ไม่ใช่เรื่องง่ายและเขียนยุ่งยาก
โซลูชันที่ 2: ใช้ตัวระบุ (?, +, *, { }) เพื่อจับคู่การปรากฏที่ต่อเนื่องกันของอักขระบางตัวให้เสร็จสมบูรณ์ อ็อบเจ็กต์ปกติ/d{6}/gi
เมื่อใช้อักขระจุด (.) กับตัวระบุ จะสามารถจับคู่อักขระใดๆ ในช่วงหมายเลขที่ระบุได้
นิพจน์ทั่วไปรองรับการจับคู่แบบโลภและการจับคู่แบบขี้เกียจเมื่อจับคู่อักขระใดๆ ภายในช่วงที่ระบุ
ในนิพจน์ทั่วไป เนื้อหาที่ล้อมรอบด้วยอักขระวงเล็บ "()" เรียกว่า "นิพจน์ย่อย"
วงเล็บใช้การจับคู่ catch และ cater และหากไม่ได้ใช้วงเล็บ จะกลายเป็น catch และ er
เมื่อไม่ได้จัดกลุ่ม หมายถึง จับคู่อักขระ c 2 ตัว หลังจากจัดกลุ่มแล้ว หมายถึงจับคู่สตริง "bc" 2 ตัว
: กระบวนการจัดเก็บเนื้อหาที่จับคู่โดยนิพจน์ย่อยลงในพื้นที่แคชของระบบ
การไม่จับภาพ: อย่าเก็บเนื้อหาที่ตรงกันของนิพจน์ย่อยไว้ในแคชของระบบ ใช้ (?:x) เพื่อให้บรรลุเป้าหมายนี้
เมธอดแทนที่ () ของวัตถุ String สามารถใช้ $n ได้โดยตรง (n คือจำนวนเต็มบวกที่มากกว่า 0) เพื่อรับเนื้อหาที่บันทึกและดำเนินการแทนที่เนื้อหาที่บันทึกโดยนิพจน์ย่อยให้เสร็จสมบูรณ์
คุณสามารถใช้ "(?:x)" เพื่อให้ได้การจับคู่แบบไม่จับภาพ
เมื่อเขียนนิพจน์ทั่วไป หากคุณต้องการรับเนื้อหาที่บันทึกไว้ของนิพจน์ย่อยที่จัดเก็บไว้ในพื้นที่แคชในนิพจน์ทั่วไป คุณสามารถใช้ "n" (n คือจำนวนเต็มบวกที่มากกว่า 0) ข้อมูลอ้างอิงนี้ กระบวนการคือ "การอ้างอิงแบบย้อนกลับ"
การยืนยันความกว้างเป็นศูนย์ : หมายถึงการจับคู่นิพจน์ย่อยที่มีความกว้างเป็นศูนย์ ซึ่งใช้เพื่อค้นหาว่าเนื้อหาที่จับคู่โดยนิพจน์ย่อยมีอักขระเฉพาะที่ตั้งค่าก่อนหรือหลัง
การจัดประเภท: แบ่งออกเป็นการดึงข้อมูลล่วงหน้าแบบไปข้างหน้าและแบบย้อนกลับ แต่ JavaScript รองรับเฉพาะการดึงข้อมูลล่วงหน้าเท่านั้น กล่าวคือ การจับคู่ข้อมูลก่อนที่จะมีหรือไม่มีเนื้อหาที่บันทึกไว้ และผลลัพธ์ที่ตรงกันไม่มีเนื้อหาที่บันทึก
มีตัวดำเนินการจำนวนมากในนิพจน์ทั่วไป ในการใช้งานจริง โอเปอเรเตอร์ต่างๆ จะถูกจับคู่ตามลำดับความสำคัญ ลำดับความสำคัญของตัวดำเนินการที่ใช้กันทั่วไปในนิพจน์ทั่วไป เรียงลำดับจากสูงไปต่ำมีดังนี้
[กรณี] การค้นหาและการแทนที่เนื้อหา
แนวคิดในการนำโค้ดไปใช้ :
การใช้รหัส
<!DOCTYPE html> <html> <หัว> <meta charset="UTF-8"> <title>การค้นหาและการแทนที่เนื้อหา</title> <สไตล์> p {ลอย: ซ้าย;} อินพุต {ระยะขอบ: 0 20px;} </สไตล์> </หัว> <ร่างกาย> <p>เนื้อหาก่อนการกรอง:<br> <textarea id="pre" rows="10" cols="40"></textarea> <input id="btn" type="button" value="filter"> </p> <p>เนื้อหาที่กรอง:<br> <textarea id="res" rows="10" cols="40"></textarea> </p> <สคริปต์> document.getElementById('btn').onclick = ฟังก์ชั่น () { // กำหนดกฎเนื้อหาที่ต้องค้นหาและแทนที่ [u4e00-u9fa5] หมายถึงการจับคู่ตัวอักษรจีน var reg = /(bad)|[u4e00-u9fa5]/gi; var str = document.getElementById('pre').value; var newstr = str.replace(reg, '*'); document.getElementById('res').innerHTML = newstr; - </สคริปต์> </ร่างกาย> </html>
คำแนะนำที่เกี่ยวข้อง: บทช่วยสอนการเรียนรู้ JavaScript
ข้างต้นคือนิพจน์ทั่วไปของ JavaScript เพียงพอแล้วสำหรับรายละเอียดเพิ่มเติม โปรดใส่ใจกับบทความอื่น ๆ ที่เกี่ยวข้องบนเว็บไซต์ภาษาจีน PHP