Metode satu:
Saat mengerjakan sebuah proyek, Anda mungkin perlu menggunakan js untuk memverifikasi kebenaran input formulir. Misal: Misal ingin verifikasi bulan, formatnya adalah: 'yyyy-MM'. Ekspresi reguler ini sangat mudah ditulis. Jika memang tidak bisa menuliskannya, Anda juga bisa menggunakan Google dan Baidu .Ada banyak contoh di Internet! Namun, jika ekspresi reguler js mati dengan cara ini, itu juga akan membawa masalah baru: Bagaimana jika format bulan file konfigurasi diubah? Ubah ke 'yyyyMM', atau 'yyyy_MM'...? ? Apakah kita harus ingat untuk mengubah ekspresi reguler di js berulang kali? ?
Saat ini kita harus bertanya: Bagaimana kita bisa menulis ekspresi reguler dinamis? Setelah memodifikasi file konfigurasi, kita tidak perlu lagi menyentuh kodenya?
Penulis membaca manual js dan tidak menemukan cara untuk mengubah string menjadi ekspresi reguler. Namun, masalah ini dapat diselesaikan secara tidak langsung dengan menggunakan metode eval(); Jadi menulis kode yang lebih serbaguna!
Solusi umum untuk contoh di atas diposting di bawah ini:
Copy kode kodenya sebagai berikut:
/**
* Verifikasi apakah input formulir bulan sah
* pola: string format bulan
* id : id formulir
*/
fungsi validasiBulan(pola, id) {
var teks = dokumen.getElementById(id);
var bulanStr = teks.nilai;
var splitChar = "";
if(pola.panjang > 6) splitChar = pola.substring(4, pola.panjang - 2);
eval("var re = ///d{4}" + splitChar + "//d{2}$/;");
//var re = //d{4}-/d{2}$/;
if(monthStr.match(re) == null) {
alert("Silakan lihat format [" + pola + "] untuk input!/n" + "misal /"2010" + splitChar + "11/" atau /"2010" + splitChar + "03/"");
teks.nilai = "";
teks.fokus();
kembali salah;
}
kembali benar;
}
Copy kode kodenya sebagai berikut:
/**
* Verifikasi apakah input formulir bulan sah
* pola: string format bulan
* id : id formulir
*/
fungsi validasiBulan(pola, id) {
var teks = dokumen.getElementById(id);
var bulanStr = teks.nilai;
var splitChar = "";
if(pola.panjang > 6) splitChar = pola.substring(4, pola.panjang - 2);
eval("var re = ///d{4}" + splitChar + "//d{2}$/;");
//var re = //d{4}-/d{2}$/;
if(monthStr.match(re) == null) {
alert("Silakan lihat format [" + pola + "] untuk input!/n" + "misal /"2010" + splitChar + "11/" atau /"2010" + splitChar + "03/"");
teks.nilai = "";
teks.fokus();
kembali salah;
}
kembali benar;
}
Satu hal yang perlu diperhatikan: ketika mengeja string skrip secara dinamis dan meneruskannya ke metode eval() untuk dieksekusi, karakter '/' harus di-escape.
Metode dua:
Copy kode kodenya sebagai berikut:
<skrip>
var n=Array baru( ".htm ", ".html ", ".shtml ");
//var pattern1 = RegExp baru( "//w+// "+n[0]+ "$ ", "gi ");
var s1= "b.shtml ";
var hasil = salah;
for(var i=0;i <n.panjang;i++)
{
pattern1 = RegExp baru( "//w+// "+n[i]+ "$ ", "gi ");
hasil|=pattern1.test(s1);
}
waspada(Boolean(hasil));
</skrip>