Jika regex Anda bersifat global, dan Anda menangkapnya, Anda harus menggunakan exec. Pertandingan tidak akan mengembalikan semua tangkapan Anda.
Cocok bekerja sangat baik saat hanya mencocokkan (tidak menangkap). Anda menjalankannya sekali dan itu memberikan array dari semua pertandingan. (meskipun jika regex tidak global, maka pertandingan akan menunjukkan kecocokan diikuti dengan tangkapan)
Exec adalah apa yang Anda gunakan saat Anda menangkap, dan setiap kali dijalankan itu memberikan kecocokan, diikuti oleh tangkapan. (kecocokan akan berperilaku dengan cara memberikan kecocokan lengkap diikuti dengan tangkapan, hanya jika regex tidak global).
Penggunaan lain dengan Exec, mendapatkan indeks atau posisi, dari suatu kecocokan. Jika Anda memiliki variabel untuk regex Anda, Anda dapat menggunakan .lastIndex dan mendapatkan posisi yang cocok. Objek regex memiliki .lastIndex, dan objek regex adalah tempat Anda melakukan .exec. Pencocokan titik dilakukan pada sebuah string dan Anda tidak akan dapat melakukan objek regex dot lastIndex
Sebuah string, memiliki fungsi match, yang diberikan regex. Dan regex, memiliki fungsi exec, dan mengirimkan string
exec Anda menjalankan beberapa kali. pertandingan yang Anda jalankan sekali
Sebaiknya gunakan kecocokan saat tidak menangkap dan saat menangkap Anda bisa menggunakan exec yang lebih kuat karena bagus untuk menangkap, tetapi jika Anda memang menggunakan kecocokan saat menangkap, lihat bahwa itu menunjukkan penangkapan saat regex tidak global, tetapi tidak. t show menangkap saat regex bersifat global.
> "azb".match(/a(z)b/);
[ "azb", "z" ]
> "azb".match(/a(z)b/g);
[ "azb" ]
>
Hal lainnya adalah jika Anda menggunakan exec, catatan yang dipanggil di regex, maka jika Anda menggunakan variabel untuk regex, Anda memiliki lebih banyak kekuatan.
Anda tidak mendapatkan kecocokan saat Anda tidak menggunakan variabel untuk regex, jadi gunakan variabel untuk regex, saat menggunakan exec.
> /./g.exec("abc")
[ "a" ]
> /./g.exec("abc")
[ "a" ]
> /./g.exec("abc")
[ "a" ]
>
> /[a-c]/g.exec("abc")
[ "a" ]
> /[a-c]/g.exec("abc")
[ "a" ]
>
> var r=/[a-c]/g
> r.exec("abc")
[ "a" ]
> r.exec("abc")
[ "b" ]
> r.exec("abc")
[ "c" ]
> r.exec("abc")
null
>
Dan dengan exec, Anda bisa mendapatkan "indeks" dari pertandingan tersebut
> var r=/T/g
> r.exec("qTqqqTqqTq");
[ "T" ]
> r.lastIndex
2
> r.exec("qTqqqTqqTq");
[ "T" ]
> r.lastIndex
6
> r.exec("qTqqqTqqTq");
[ "T" ]
> r.lastIndex
9
> r.exec("qTqqqTqqTq");
null
> r.lastIndex
0
>
Jadi, jika Anda ingin mengindeks atau menangkap, maka gunakan exec (ingatlah bahwa seperti yang Anda lihat, dengan "indeks", "indeks" yang diberikannya benar-benar kejadian ke-n, dihitung dari 1. Jadi Anda bisa mendapatkan yang tepat indeks dengan mengurangi 1. Dan seperti yang Anda lihat, ini memberikan 0 - Indeks terakhir 0 - untuk tidak ditemukan).
Dan jika Anda ingin merentangkan pencocokan, Anda dapat menggunakannya saat menangkap, tetapi tidak saat regex bersifat global, dan saat Anda melakukannya untuk itu, maka konten larik tidak semuanya cocok, tetapi penuh. pertandingan diikuti dengan penangkapan.
exec
untuk mendapatkan semua sub-pilihan.