วิธีที่หนึ่ง:
เมื่อทำงานในโครงการ คุณอาจจำเป็นต้องใช้ js เพื่อตรวจสอบความถูกต้องของการป้อนแบบฟอร์ม ในกรณีนี้ คุณต้องใช้นิพจน์ทั่วไปของ js ตัวอย่างเช่น หากคุณต้องการยืนยันเดือน รูปแบบคือ: 'yyyy-MM' นิพจน์ทั่วไปนี้เขียนได้ง่ายมาก หากคุณเขียนไม่ออกจริงๆ คุณยังสามารถใช้ Google และ Baidu ได้ . มีตัวอย่างมากมายบนอินเทอร์เน็ต! อย่างไรก็ตาม หากนิพจน์ทั่วไปของ js ถูกเขียนจนตายในลักษณะนี้ ก็จะนำมาซึ่งปัญหาใหม่ด้วย: จะเกิดอะไรขึ้นหากรูปแบบเดือนของไฟล์การกำหนดค่ามีการเปลี่ยนแปลง เปลี่ยนเป็น 'yyyyMM' หรือ 'yyyy_MM'...? - เราต้องจำไว้ว่าต้องเปลี่ยนนิพจน์ทั่วไปใน js ซ้ำแล้วซ้ำอีกหรือไม่? -
ในตอนนี้ เราต้องถามว่า เราจะเขียน Dynamic Regular Expression ได้อย่างไร หลังจากแก้ไขไฟล์การกำหนดค่าแล้ว เราไม่จำเป็นต้องแตะโค้ดอีกต่อไป
ผู้เขียนได้ดูคู่มือ js และไม่พบวิธีแปลงสตริงให้เป็นนิพจน์ทั่วไป อย่างไรก็ตาม ปัญหานี้สามารถแก้ไขได้โดยอ้อมโดยใช้เมธอด eval(); เพื่อรันสคริปต์แบบไดนามิก ดังนั้นการเขียนโค้ดที่หลากหลายยิ่งขึ้น!
วิธีแก้ไขทั่วไปสำหรับตัวอย่างข้างต้นมีการโพสต์ไว้ด้านล่าง:
คัดลอกรหัสรหัสดังต่อไปนี้:
-
* ตรวจสอบว่าการป้อนแบบฟอร์มเดือนนั้นถูกกฎหมายหรือไม่
* รูปแบบ: สตริงรูปแบบเดือน
* id: รหัสแบบฟอร์ม
-
ฟังก์ชั่น validateMonth (รูปแบบ, id) {
ข้อความ var = document.getElementById(id);
var monthStr = text.value;
var splitChar = "";
if(pattern.length > 6) splitChar = pattern.substring(4, pattern.length - 2);
eval("var re = ///d{4}" + splitChar + "//d{2}$/;");
//var re = //d{4}-/d{2}$/;
ถ้า (monthStr.match (ใหม่) == null) {
alert("โปรดอ้างอิงรูปแบบ [" + pattern + "] สำหรับการป้อนข้อมูล!/n" + "เช่น /"2010" + splitChar + "11/" หรือ /"2010" + splitChar + "03/"");
ข้อความ.value = "";
ข้อความ.โฟกัส();
กลับเท็จ;
-
กลับเป็นจริง;
-
คัดลอกรหัสรหัสดังต่อไปนี้:
-
* ตรวจสอบว่าการกรอกแบบฟอร์มเดือนนั้นถูกกฎหมายหรือไม่
* รูปแบบ: สตริงรูปแบบเดือน
* id: รหัสแบบฟอร์ม
-
ฟังก์ชั่น validateMonth (รูปแบบ, id) {
ข้อความ var = document.getElementById(id);
var monthStr = text.value;
var splitChar = "";
if(pattern.length > 6) splitChar = pattern.substring(4, pattern.length - 2);
eval("var re = ///d{4}" + splitChar + "//d{2}$/;");
//var re = //d{4}-/d{2}$/;
ถ้า (monthStr.match (ใหม่) == null) {
alert("โปรดอ้างอิงรูปแบบ [" + pattern + "] สำหรับการป้อนข้อมูล!/n" + "เช่น /"2010" + splitChar + "11/" หรือ /"2010" + splitChar + "03/"");
ข้อความ.value = "";
ข้อความ.โฟกัส();
กลับเท็จ;
-
กลับเป็นจริง;
-
สิ่งหนึ่งที่ควรสังเกต: เมื่อสะกดสตริงสคริปต์แบบไดนามิกและส่งต่อไปยังเมธอด eval() เพื่อดำเนินการ จะต้องยกเว้นอักขระ '/'
วิธีที่สอง:
คัดลอกรหัสรหัสดังต่อไปนี้:
<สคริปต์>
var n=อาร์เรย์ใหม่ ( ".htm ", ".html ", ".shtml ");
//var pattern1 = RegExp ใหม่( "//w+// "+n[0]+ "$ ", "gi ");
var s1= "b.shtml ";
ผลลัพธ์ var = เท็จ;
สำหรับ(var i=0;i <n.length;i++)
-
pattern1 = RegExp ใหม่ ( "//w+// "+n[i]+ "$ ", "gi ");
ผลลัพธ์|=รูปแบบ1.ทดสอบ(s1);
-
การแจ้งเตือน (บูลีน (ผลลัพธ์));
</สคริปต์>