Rumah  >  Artikel  >  hujung hadapan web  >  Ketahui kaedah pemadanan biasa kemahiran javascript_javascript

Ketahui kaedah pemadanan biasa kemahiran javascript_javascript

WBOY
WBOYasal
2016-05-16 15:13:451102semak imbas

Terdapat tiga kaedah untuk pemadanan biasa dalam JavaScript, padanan, eksekusi dan ujian. Kaedah ini semuanya berkaitan dengan rentetan dan objek RegExp, tetapi senario penggunaan adalah berbeza dan mudah dikelirukan. padanan ialah kaedah rentetan, menerima objek RegExp sebagai parameter dan yang lain ialah kaedah objek RegExp, menerima parameter rentetan.

var str = 'abcdef12ab34cd56ef';
var patt = new RegExp('ab'); //主意是非全局匹配

var ret_test = patt.test(str);
console.log(ret_test);
var ret_match = str.match(patt);
console.log(ret_match);
var ret_exec = patt.exec(str);
console.log(ret_exec);

1. regExp.test(rentetan)

Kaedah ini adalah yang paling mudah Jika rentetan padanan regExp ditemui dalam rentetan, ia akan kembali benar Jika tiada rentetan sepadan ditemui, ia akan mengembalikan palsu

2. regExp.exec(rentetan)

Kaedah ini lebih rumit sedikit.

Apabila regExp tidak mempunyai bendera global, nilai pulangannya ialah tatasusunan rentetan: elemen ke-0 tatasusunan ialah rentetan yang baru dipadankan , elemen kedua ialah subungkapan kedua regExp...dan seterusnya. Dalam contoh di atas, jika patt = new RegExp('f(

\d)(\d)','g' maka ret_exec akan menjadi tatasusunan rentetan: ['f12','1'); , '2'].

Apabila regExp mempunyai bendera global (pilihan g), nilai pulangan ialah tatasusunan yang terdiri daripada rentetan pertama yang dipadankan. Elemen ke-0 tatasusunan ialah rentetan yang baru dipadankan tatasusunan ialah subungkapan pertama regExp, elemen kedua tatasusunan ialah subungkapan kedua regExp... dan seterusnya. Pada masa yang sama, atribut (lastIndex) objek regExp ditukar dan lastIndex ditetapkan kepada kedudukan aksara terakhir rentetan, kedudukan selepasnya (dalam contoh di atas, lastIndex = 2). Apabila regExp.exec(rentetan) dipanggil semula, julat carian akan dicari bermula dari regExp.lastIndex. Pada masa ini, nilai pulangan masih merupakan tatasusunan rentetan elemen tunggal, lastIndex = 10. Kami sering menggunakan gelung sementara untuk mengulangi padanan dalam rentetan:


var patt = new RegExp('ab', 'g'),
  str = 'abcdef12ab34cd56ef', ret;
while((ret = patt.exec(str))!=null) {
  console.log(ret);
}
//输出
['ab']
['ab']
Apa yang dipulangkan oleh kaedah exec bukanlah tatasusunan standard, tetapi harus dianggap sebagai tatasusunan kelas, kerana ia juga mempunyai dua atribut: input ialah rentetan input dan indeks ialah kedudukan aksara pertama rentetan yang dipadankan pada masa ini dalam input.

3. string.match(regExp)

Kaedah ini lebih mudah daripada exec kerana ia tidak perlu mempertimbangkan atribut lastIndex regExp. Begitu juga, dua situasi perlu dibezakan (padanan global dan padanan bukan global)

Apabila regExp tidak mempunyai bendera global, nilai pulangan adalah sama dengan memanggil exec, mengembalikan tatasusunan Elemen ke-0 tatasusunan ialah rentetan yang baru dipadankan Jika regExp mempunyai subungkapan, elemen pertama tatasusunan ialah regExp . Subungkapan pertama , elemen kedua ialah subungkapan kedua regExp...dan seterusnya. Ideanya ialah tatasusunan juga mempunyai dua atribut: input ialah rentetan rentetan input, dan indeks ialah kedudukan aksara pertama rentetan yang dipadankan pada masa ini dalam input.

Apabila regExp mempunyai bendera global (pilihan g), ia sangat mudah dan konsisten dengan pemahaman kami: kembalikan tatasusunan yang terdiri daripada semua rentetan yang dipadankan. Ini ialah tatasusunan standard tanpa atribut input dan tiada atribut indeks. Tiada maklumat lain dalam tatasusunan nilai pulangan kecuali rentetan yang dipadankan.

Daripada analisis di atas, jika anda hanya ingin menentukan sama ada rentetan sepadan dengan ungkapan biasa tertentu, gunakan kaedah ujian. Jika anda ingin mendapatkan semula semua rentetan padanan sekali gus, atau hanya mencari rentetan padanan pertama, gunakan kaedah padanan. Jika anda ingin memadankan beberapa kali dan perlu mengetahui kedudukan setiap rentetan yang dipadankan dalam rentetan asal, atau terdapat maklumat subungkapan dalam ungkapan biasa yang perlu anda perhatikan, gunakan kaedah exec.

Di atas adalah pengenalan kepada pelbagai kaedah pemadanan biasa dalam JavaScript. Saya harap ia akan membantu pembelajaran semua orang.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn