
วิธีเริ่มต้นใช้งาน 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
