Cara menggunakan javascript regex

Sebelum munculnya bahasa hypertext, melainkan, sampai menjadi jelas bahwa kita tidak boleh hanya melihat, tetapi untuk melakukannya dalam kondisi tertentu, di tempat tertentu, di bawah data yang diubah dalam jumlah yang tepat, pencarian biasa dan mengganti fungsi diselenggarakan setiap canggih programmer. Membuat karya dari pencarian seni dalam bahasa pemrograman, dan basis data unggul dalam bentuk kondisi sampling, dilengkapi dengan prosedur tersimpan, pemicu dan cara lain sampel besar trek informasi relasional. Munculnya ekspresi reguler untuk revolusi tidak memimpin, tapi itu cara yang berguna dan nyaman untuk mencari dan mengganti informasi. Sebagai contoh, ekspresi reguler JavaScript email secara signifikan menyederhanakan pendaftaran pengunjung, tidak memuat situs mengirimkan pesan ke alamat tidak ada.

Untuk mengatakan bahwa ekspresi JavaScript biasa adalah urutan produmannnyh jauh lebih baik indexOf () panggilan dalam rangka siklik konvensional dan operator, tidak bisa tidak mengatakan bahwa itu telah membuat kode script kompak, tetapi sedikit dipahami yang belum tahu, bisa jelas.

Objek RegExp = + template engine

ekspresi reguler - adalah mesin template +. Yang pertama sebenarnya adalah sebuah ekspresi reguler - objek JavaScript - Ekspresi Reguler, yang kedua - Template pemain ini, menerapkannya ke garis. Mesin yang menerapkan ekspresi reguler untuk setiap bahasa pemrograman yang berbeda. Dan meskipun tidak semua perbedaan yang signifikan, harus diingat, serta pastikan untuk hati-hati memeriksa ekspresi reguler sebelum operasi.

Sebuah notasi khusus saat menulis ekspresi reguler cukup mudah digunakan dan cukup efektif, tetapi membutuhkan perawatan, kerapian dan kesabaran dari pengembang. Dengan notasi pola ekspresi reguler perlu untuk membiasakan diri. Ini bukan sekedar iseng saja, itu adalah logika mekanisme untuk menerapkan «JavaScript ekspresi reguler."

Pola ekspresi reguler

Diizinkan dua pilihan:

var expOne = / abc * / i;

var expTwo = RegExp ( "abc *", "i");

Biasanya digunakan metode pertama. Dalam kasus kedua, tanda kutip, karena menggunakan karakter '\', itu harus melarikan diri dengan aturan umum.

"Saya - flag yang menunjukkan "kasus tidak sensitif". Anda juga dapat menggunakan bendera g '- «Pencarian global' dan 'm' - pencarian multi-line.

Simbol '/' untuk menunjukkan umum untuk menggunakan template.

Awal dan akhir dari ekspresi reguler

The '^' mendefinisikan karakter (s) dari mana untuk memulai ekspresi reguler, dan '$' menentukan karakter (s) harus di akhir. Anda tidak harus bereksperimen dengan mereka di dalam ekspresi, di mana mereka memiliki arti yang berbeda.

Sebagai contoh,

var eRegExp = new RegExp (cRegExp, 'i');

var cRegRes = '';

var stest = 'AbcZ';

jika (eRegExp.test (stest)) {

cRegRes + = '- Ya';

} Lain {

cRegRes + = '- Tidak ada';

}

var dTestLine = document.getElementById ( 'scTestLine');

dTestLine.innerHTML = 'Ekspresi /' + cRegExp + '/ untuk baris "' + stest + '"' + cRegRes.

Unsur 'scTestLine' akan menghasilkan (variabel cRegExp memiliki arti yang sesuai):

ekspresi / ^ AbcZ $ / untuk string "abcz" - Ya

Jika Anda menghapus 'i' bendera, hasilnya adalah:

ekspresi / ^ AbcZ $ / untuk string "abcz" - Tidak ada

Isi ekspresi reguler

Sebuah ekspresi reguler adalah urutan karakter, yang merupakan subjek dari pencarian. Ekspresi / qwerty / mencari entri adalah urutan ini:

ekspresi / qwerty / string "qwerty" - Ya

ekspresi / qwerty / string "123qwerty456" - Ya

The '^' perubahan adalah ekspresi:

ekspresi / ^ qwerty / string "123qwerty456" - Tidak ada

ekspresi / ^ qwerty / string "qwerty456" - Ya

Demikian pula, untuk akhir simbol line. ekspresi reguler memungkinkan untuk konsistensi: misalnya, [az], [AZ], [0-9] - semua huruf abjad dalam kasus ini atau tokoh. huruf Rusia juga dapat digunakan, namun harus memperhatikan pengkodean string (yang dicari yang dicari) dan halaman. Seringkali huruf Rusia, serta karakter khusus, adalah lebih baik untuk mengatur kode.

Ketika membentuk ekspresi reguler dapat menentukan pilihan untuk kehadiran simbol-simbol tertentu di lokasi tertentu, dengan jumlah mereka diberikan sebagai berikut: '*' = 0 pengulangan atau lebih kali; '+' = 1 kali atau lebih pengulangan; {1} adalah sama, sebagai '+'; {N} = pengulangan persis n kali; {N,} = n pengulangan kali atau lebih; {N, m} = pengulangan n untuk kali m.

Menggunakan kurung, Anda dapat menentukan karakter set pilihan. Ini terlihat seperti ini. [Abcd] = [ad] = setiap empat simbol: 'a', 'b', 'c' atau 'd'. Anda dapat menentukan sebaliknya. Setiap karakter selain yang ditentukan dalam set: [^ abcd] = karakter apapun selain 'a', 'b', 'c' atau 'd'. '?' Hal ini menunjukkan bahwa pada saat ini simbol tidak bisa. '' menentukan karakter apapun selain menunjukkan baris baru. Ini '\ n', '\ r', '\ u2028' atau '\ u2029'. Ungkapan '\ s * | \ S *' = '[\ s | \ S] *' berarti mencari karakter apapun, termasuk baris baru.

versi yang disederhanakan dari ekspresi reguler

Ungkapan '[\ s | \ S] *' - ruang pencarian, atau kekurangan itu, yang adalah semua yang di telepon. Dalam hal ini, simbol '\ s' menunjukkan ruang, dan '\ S' - ketidakhadirannya.

Demikian pula, Anda dapat menggunakan '\ d' untuk mencari angka desimal, dan '\ D' menemukan karakter non-numerik. Notasi '\ f', 'r' dan '\ n' sesuai dengan bentuk-feed, carriage return dan line-feed.

Tab karakter - '\ t', vertikal - '\ v'. Penunjukan '\ w' menemukan karakter Latin alphabet (huruf, angka, dan tanda garis bawah) = [A-Za-Z0-9_].

Penunjukan '\ W' adalah setara dengan [^ A-Za-Z0-9_]. Ini berarti setiap karakter yang bukan huruf abjad, angka, atau '_'.

Karakter pencarian '\ 0' = pencari NUL karakter. Cari '\ xHH' atau '\ uhhhh' = Cari kode karakter atau HHHH HH masing-masing. H - heksadesimal digit.

Direkomendasikan kata-kata dan coding dari ekspresi reguler

Setiap ekspresi reguler penting untuk hati-hati diuji pada versi yang berbeda dari baris.

Dengan pengalaman menciptakan kesalahan ekspresi reguler akan lebih kecil, namun demikian harus selalu diingat bahwa pengetahuan mereka sendiri dari aturan penulisan kalimat biasa tidak mungkin benar, terutama ketika "musim reguler" dipindahkan dari satu bahasa ke bahasa lain.

Memilih antara klasik (indikasi yang tepat) dan versi sederhana dari ekspresi reguler, lebih baik untuk memilih yang pertama. Setelah semua, dalam klasik selalu jelas menunjukkan bahwa kedua dicari. Jika ekspresi biasa atau string pencarian memiliki huruf Rusia, harus mengarah pada satu pengkodean semua baris dan halaman yang beroperasi menemukan JavaScript-kode melakukan ekspresi reguler.

Ketika ada pengolahan karakter, abjad non-Latin, masuk akal untuk mempertimbangkan indikasi kode karakter, bukan karakter sendiri.

Ketika menerapkan algoritma pencarian dalam JavaScript ekspresi reguler harus hati-hati diperiksa secara. Hal ini sangat penting untuk mengontrol pengkodean karakter.

Kurung dalam ekspresi reguler

Kurung menentukan pilihan untuk simbol, yang harus atau mungkin tidak di tempat tertentu, dan bulat - urut varian. Tapi ini hanya aturan umum. Dari itu tidak ada pengecualian, tetapi ada berbagai macam aplikasi.

var cRegExp = "[az] * (png | jpg | gif).";

var eRegExp = new RegExp (cRegExp, 'i');

var cRegRes = '';

var stest = 'picture.jpg';

jika (eRegExp.test (stest)) {

cRegRes + = '- Ya';

} Lain {

cRegRes + = '- Tidak ada';

}

hasil:

/[az]*.(png|jpg|gif)/ ekspresi untuk garis "picture.jpg" - Ya

Ekspresi /^[ad][az]*.(png|jpg|gif)/ untuk "picture.jpg" line - Tidak ada

/^[ad][az]*.(png|jpg|gif)/ ekspresi untuk garis "apicture.jpg" - Ya

Ekspresi /^[ad][az]*.(png|jpg|gif)/ untuk "apicture.jg" line - Tidak ada

Perlu dicatat bahwa semua, maka tanda bintang dapat hadir nol kali. Ini berarti bahwa "musim reguler" mungkin bekerja dengan cara yang tak terduga setidaknya.

Periksa RegExp - pengujian email

Ekspresi JavaScript reguler diperoleh dua metode, pengujian dan exec, dan dapat digunakan di garis benda (String) dalam metode mereka (fungsi): cari, split, mengganti dan pertandingan.

Metode pengujian telah menunjukkan, hal itu memungkinkan Anda untuk memeriksa kebenaran dari ekspresi reguler. Metode Hasil: benar / salah.

Pertimbangkan hal berikut JavaScript ekspresi reguler. Periksa email dari jumlah "sulit, tapi pasti":

var eRegExp = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s @ "] +) *) | (". + ")) @ ((\ [[0-9] {1,3} \ [0-9] {1,3} \ [0-9] {.. . 1,3} \ [0-9] {1,3}]) | (. ([a-zA-Z \ -0-9] + \) + [a-zA-Z] {2}) ) $ /;

string var stest ='[email protected] 'memberikan benar, maka ada string ini adalah email-alamat yang benar. Audit ini dilakukan oleh eRegExp.test (stest).

penggunaan praktis: pengobatan e-Mail

Metode Exec menyediakan output array, hubungi:

var aresult = eRegExp.exec (stest);

cRegRes = '
' + aResult.length + '
';
for (var i = 0; icRegRes + = aresult [i] + '
';
}

Ini memberikan hasil sebagai berikut:

9
[email protected]
Slava.Chip
Slava.Chip
.Chip
terdefinisi
sci.by
terdefinisi
sci.by
sci.

Metode lain bekerja sama. Dianjurkan untuk memeriksa mereka sendiri. Pengembangan dan penggunaan kalimat biasa, itu diinginkan untuk bekerja dalam prakteknya, menyalin kode tidak selalu dianjurkan di sini.

Populer "musim reguler"

JavaScript ekspresi reguler diberikan kepada eMail tidak hanya ada banyak pilihan lebih mudah. Misalnya, /^[\w-\.]+@[\w-]+\.[az]{2,3}$/i. Namun, perwujudan ini memperhitungkan tidak semua perwujudan dari catatan alamat email.

Tentu saja, Anda harus melihat pengalaman rekan-rekan, untuk menganalisis bagaimana diusulkan mereka sebelum merancang mereka sendiri pada JavaScript ekspresi reguler. Tapi ada beberapa kesulitan. Kita tidak boleh lupa bahwa JavaScript ekspresi reguler (contoh ketika menyalin) dapat menduplikasi karakter penting: '\', '/' atau tanda kutip. Hal ini akan menyebabkan kesalahan, yang dapat Anda mencari panjang.

Hal ini penting untuk memperhitungkan biasa "dimensi manusia." Setelah JavaScript ekspresi reguler formal untuk ponsel, yang mungkin pengunjung (orang), itu diberikan dengan cara yang berbeda: 123-45-67, (29) 1234567, 80291234567 atau 375.291.234.567. Dan itu semua nomor yang sama. Ejaan beberapa pola tidak selalu dapat diterima, dan fiksasi kaku aturan untuk menulis nomor dapat membuat ketidaknyamanan yang tidak perlu atau pembatasan. Option / ^ \ d [\ d \ (\) \ -] {4,14} \ d $ / i cocok untuk kebanyakan kasus Anda memeriksa nomor telepon Anda.

Jika Anda ingin membuat ekspresi reguler JavaScript, hanya cek digit, bahkan kasus sederhana tersebut membutuhkan klarifikasi. Ini harus dipertimbangkan integer atau pecahan, notasi ilmiah, atau nomor normal, positif atau negatif. Anda juga dapat memperhitungkan keberadaan simbol mata uang, jumlah digit setelah titik desimal dan pembagian seluruh bagian dari jumlah pada tiga serangkai.

Ekspresi / ^ \ d + $ / i cek hanya nomor dan ekspresi /^\d+\.\d+$/i memungkinkan penggunaan titik untuk menunjukkan bagian pecahan dari nomor tersebut.

Dalam JavaScript memeriksa kalimat biasa dapat digunakan untuk menunjukkan format input data keras, yang penting, terutama ketika memasuki profil, data paspor, dan alamat hukum t. D.

Periksa tanggal - sederhana untuk kompleks

Mempertimbangkan lain JavaScript ekspresi reguler. Contoh sampai saat ini, seperti untuk jumlah nomor telepon mewakili pilihan antara kekakuan dan fleksibilitas. Tanggal event - salah satu data penting, yang sering harus diberikan. Tapi memperbaiki input dalam format tertentu: "dd-mm-yyyy 'atau' d.m.gg 'sering menyebabkan ketidakpuasan pelanggan. Transisi dari bidang masukan dari hari ke bulan, penuh HTML-bentuk klasik, tidak dapat terjadi ketika Anda memasukkan hanya satu digit, dan masukan kedua bisa sulit. Sebagai contoh, di bidang hari itu diperkenalkan 3 dan berikutnya nomor 2 tidak menggantikan yang pertama, dan dikaitkan dengan dirinya 32, yang, tentu saja, akan menyebabkan ketidaknyamanan.

Efisiensi dan kenyamanan dari ekspresi reguler dasarnya tergantung pada konstruksi umum dari dialog dengan pengunjung. Dalam satu kasus, untuk menunjukkan tanggal disarankan untuk menggunakan satu bidang masukan dari bentuk, dalam kasus lain perlu untuk menyediakan berbagai bidang untuk hari, bulan dan tahun. Tapi kemudian setiap tambahan "biaya kode" untuk memeriksa tahun kabisat, jumlah bulan, jumlah hari di dalamnya.

Mencari dan mengganti, memori ekspresi reguler

JavaScript ganti (ekspresi reguler) dengan menggunakan metode dari objek String, dan memungkinkan kita untuk menemukan nilai dan mengubahnya segera. Hal ini berguna untuk mengoreksi kesalahan pengetikan, mengedit isi kolom formulir dan untuk mengkonversi data dari satu format presentasi yang lain.

var cRegExp = / ([a-z] +) \ s ([a-z] +) \ s ([a-z] +) / i; // ketika mencari tiga 'variabel'

var stest = 'artikel ini baik!';
var cRegRes = sTest.replace (cRegExp, "$ 2, $ 3, $ 1");

var dTestLine = document.getElementById ( 'scTestLine');

'Ekspresi' dTestLine.innerHTML = + cRegExp + 'untuk string "' + stest + '" berubah:' + cRegRes;

hasil:

ekspresi / ([az] +) \ s ([az] +) \ s ([az] +) / i untuk baris "artikel ini baik!" out: artikel yang baik, ini!

Ketika melakukan setiap pasangan kurung menyimpan hasil dalam 'variabel' $ n, di mana n - jumlah pasangan bracket ($ 1, $ 2, ...). Tidak seperti konvensional, di sini variabel penomoran adalah 1, bukan 0.

rekomendasi umum

ekspresi reguler menyederhanakan kode, tetapi waktu untuk mengembangkan sering membuat perbedaan. Anda bisa mulai dengan desain sederhana dan kemudian dibuat untuk menggabungkan ke dalam lebih ekspresi kompleks. Anda dapat menggunakan berbagai layanan online untuk menguji ekspresi reguler atau alat khusus lokal.

Pilihan terbaik akan membuat perpustakaan mereka sendiri ekspresi reguler dan alat-alat mereka sendiri untuk menguji perkembangan baru. Ini adalah cara terbaik untuk mengkonsolidasikan pengalaman dan belajar bagaimana untuk segera membangun desain yang handal dan nyaman.

Menggunakan pengulangan karakter dan string, yaitu, karakter khusus '*', '+' dan kawat gigi, menunjukkan jumlah pengulangan harus dipandu oleh prinsip-prinsip kesederhanaan dan kemanfaatan. Adalah penting untuk menyadari bahwa ekspresi reguler untuk awal kerja, dan untuk mendapatkan hasil sepenuhnya pada kekuatan mesin yang digunakan oleh browser. Tidak semua bahasa yang setara dengan JavaScript. Setiap browser dapat membawa mereka preferensi pribadi dalam penafsiran ekspresi reguler.

Kompatibilitas bukan hanya halaman dan style sheet, untuk ekspresi reguler, juga harus dilakukan. Halaman ini menggunakan JavaScript, dapat dianggap sebagai yang berfungsi dengan baik hanya bila telah berhasil bekerja pada berbagai browser.

JavaScript, String dan regexp

Dengan pekerjaan yang tepat di tingkat client, yaitu, di browser pengunjung dalam JavaScript, membutuhkan keterampilan tinggi pengembang. Cukup lama Anda memiliki kesempatan untuk debug JavaScript-kode browser dana sendiri atau dengan bantuan ekstensi pihak ketiga, kode editor, program independen.

Namun, tidak semua kasus, debugger dapat menangani dan memberikan dukungan yang baik untuk pengembang, deteksi kesalahan yang cepat, mendeteksi kemacetan. Saat-saat komputer telah difokuskan pada perhitungan, di masa lalu. Sekarang, membayar perhatian khusus untuk informasi dan garis objek telah datang untuk memainkan peran penting. Jumlah senar baja, dan sifat sejati mereka, mereka mewujudkan hanya pada waktu yang tepat dan tempat yang tepat.

ekspresi reguler memperkuat kemungkinan garis, tetapi membutuhkan rasa hormat diri. Debug RegExp dalam karyanya, bahkan jika itu adalah mungkin untuk mensimulasikan, ide tidak terlalu menarik.

Memahami struktur dan logika dari objek RegExp, berarti objek String, sintaks dan semantik dari JavaScript - kode aman dan aman benar, operasi yang stabil setiap halaman dan situs secara keseluruhan.

Apa itu regex javascript?

Regex adalah singkatan dari Regular Expresion. Regex merupakan sebuah teks (string) yang mendefinisikan sebuah pola pencarian sehingga dapat membantu kita untuk melakukan matching (pencocokan), locate (pencarian), dan manipulasi teks.

Method untuk memeriksa apakah sebuah string lolos dari pola Regular Expression yang diinput?

test() Method test() digunakan untuk memeriksa apakah sebuah string lolos dari pola regular expression yang diinput. Jika lolos, hasilnya true. Jika tidak, hasilnya false.

Apa yang dimaksud dengan Regular Expression?

Regular Expression (RE) adalah sebuah notasi yang dapat digunakan untuk mendeskripsikan pola dari kata yang ingin dicari. Sebagai contoh jika RE yang dibuat adalah ‹‹ nlp ›› maka kata yang akan cocok dengan pola ini hanya kata nlp (sama persis dengan yang ada pada RE).

Apa itu regex php?

Regex merupakan singkatan dari Regular Expression, yaitu sebuah metode untuk mencari suatu pola dalam sebuah string. Dalam PHP, yang sering digunakan adalah PCRE atau “Perl Compatible Regular Expression†.