Ada dua cara untuk mendefinisikan ekspresi reguler dalam JavaScript.
1.RegExp Constructor
var pola = regexp baru ("[bc] at", "i");
Ini menerima dua parameter: satu adalah pola string yang cocok, dan yang lainnya adalah string bendera opsional.
2. Literal
var pola = /[bc] at /i;
Pola pencocokan ekspresi reguler mendukung tiga string bendera:
G: Mode pencarian global, global, yang akan diterapkan pada semua string, alih -alih menghentikan pencarian ketika pertandingan pertama dicari;
I: ingore case, abaikan kasus huruf, yaitu, abaikan kasus pola dan string saat menentukan kecocokan;
M: Beberapa baris, pola multiline, yaitu, ketika pencarian mencapai akhir dari garis teks, itu akan terus mencari apakah ada kecocokan di baris berikutnya.
Perbedaan antara dua metode untuk membuat ekspresi reguler ini adalah bahwa ekspresi reguler literal selalu berbagi instance RegExp yang sama, dan setiap instance RegExp baru yang dibuat menggunakan konstruktor adalah instance baru.
Metacharacter
Metacharacter adalah karakter dengan makna khusus. Metacharacters utama dari ekspresi reguler adalah:
([{ / ^ $ |)? * +.
Metachar memiliki makna yang berbeda dalam kombinasi yang berbeda.
Karakter khusus yang telah ditentukan sebelumnya
Kelas karakter kelas sederhana
Secara umum, ekspresi reguler memiliki karakter yang sesuai dengan karakter dalam string, tetapi kita dapat menggunakan [] untuk membangun kelas sederhana untuk mewakili kelas karakter yang cocok dengan fitur tertentu. Misalnya:
[ABC] dapat mencocokkan karakter dalam tanda kurung A, B, C atau kombinasi apa pun.
Kelas terbalik
Karena [] dapat membangun kelas, Anda secara alami akan memikirkan kelas yang sesuai yang tidak mengandung konten dalam tanda kurung. Kelas ini disebut kelas terbalik. Misalnya, [^ABC] dapat mencocokkan karakter yang bukan A atau B atau C.
Kategori Lingkup
Terkadang terlalu merepotkan untuk mencocokkan karakter satu per satu dan jenis kecocokannya sama. Pada saat ini, kita dapat menggunakan baris koneksi "-" untuk mewakili konten antara interval tertutup tertentu. Misalnya, mencocokkan semua huruf kecil dapat menggunakan [AZ], sebagai berikut:
Mencocokkan semua 0 hingga 9 dapat diekspresikan menggunakan [0-9]:
Kelas yang telah ditentukan sebelumnya
Untuk beberapa kelas yang kami buat di atas, ekspresi reguler memberi kami beberapa kelas yang ditentukan sebelumnya untuk mencocokkan karakter umum, sebagai berikut:
| karakter | Kategori yang setara | arti |
| . | [^/n/r] | Cocokkan semua karakter kecuali carriage return dan line break |
| /D | [0-9] | Karakter nomor |
| /D | [^0-9] | Karakter non-numerik |
| /S | [/t/n/x0b/f/r] | Karakter whitespace |
| /S | [^/t/n/x0b/f/r] | Karakter non-whitespace |
| /w | [a-za-z_0-9] | Karakter kata (huruf, angka, dan garis bawah) |
| /W | [^A-ZA-Z_0-9] | Karakter non-kata |
pembilang
Metode di atas cocok dengan karakter satu-ke-satu. Jika suatu karakter muncul beberapa kali berturut -turut, akan sangat merepotkan untuk mencocokkan sesuai dengan metode di atas. Oleh karena itu, kami bertanya -tanya apakah ada metode lain yang secara langsung dapat mencocokkan karakter yang muncul berulang kali. Ekspresi reguler memberi kita beberapa kuantifikasi, sebagai berikut:
| karakter | arti |
| ? | Nol atau sekali (hingga sekali) |
| + | Muncul sekali atau lebih kali (setidaknya sekali) |
| * | Nol atau beberapa kejadian (kapan saja) |
| {N} | Muncul n kali |
| {n, m} | Muncul n kali m |
| {N,} | Muncul setidaknya n kali |
Mode serakah dan non-greedy
Untuk metode pencocokan {n, m}, haruskah n atau m dicocokkan? Ini melibatkan masalah pola pencocokan. Secara default, kuantifikasi adalah karakter yang cocok sebanyak mungkin, yang disebut mode serakah, misalnya:
var num = '123456789'; num.match (// d {2,4}/g); // [1234], [5678], [9]Untuk mode yang tepat dan non-greedy, Anda hanya perlu menambahkan "?" setelah quantifier. Misalnya, {n, m}?, Itu cocok dengan karakter paling sedikit, sebagai berikut:
var num = '123456789'; num.match (// d {2,4}?/g); // [12], [34], [56], [78], [9]Pengelompokan
Kuantifikasi hanya dapat dicocokkan beberapa kali untuk satu karakter. Bagaimana jika kita ingin mencocokkan serangkaian karakter tertentu beberapa kali? Dalam ekspresi reguler, tanda kurung dapat mendefinisikan string secara keseluruhan sebagai grup.
Jika kami ingin mencocokkan kata Apple muncul 4 kali, kami dapat mencocokkan (Apple) {4} seperti ini, sebagai berikut:
Jika Anda ingin mencocokkan apel atau oranye muncul 4 kali, Anda dapat memasukkan karakter pipa "|", misalnya:
(apel | oranye) {4}
Jika beberapa tanda kurung muncul dalam ekspresi reguler menggunakan pengelompokan, yaitu beberapa grup, hasil pencocokan juga akan mengelompokkan dan memberi nomor kecocokan, misalnya:
(apel)/d+(oranye)
Jika kita tidak ingin menangkap paket tertentu, kita hanya perlu mengikuti tanda tanya dan usus besar segera sebelum kurung paket, misalnya:
(?: apel)/d+(oranye)
batas
Ekspresi reguler juga memberi kami beberapa karakter pencocokan batas yang umum digunakan, seperti:
| karakter | arti |
| ^ | Mulailah dengan xx |
| $ | Berakhir dengan xx |
| /B | Batas kata, mengacu pada karakter selain [a-za-z_0-9] |
| /B | Batas non-kata |
Kata batas cocok dengan posisi, satu sisi dari posisi ini adalah karakter yang membentuk kata, tetapi sisi lainnya adalah posisi awal atau akhir dari karakter atau string non-kata.
Pratinjau
Lookahead digunakan untuk mencocokkan kejadian berikutnya dari set karakter tertentu atau tidak.
| ekspresi | arti |
| exp1 (? = exp2) | Pertandingan diikuti oleh exp2 exp2 |
| exp1 (?! exp2) | Cocokkan exp1 yang bukan exp2 sesudahnya |
Lihat contoh:
apel (? = oranye)
(/Apple(?=orite)/).test('AppleOrange123 '); // true (/Apple(?=orange)/).test('ApplePear345 '); //PALSUMari kita lihat contoh lain:
Apple (?! Orange)
(/apple(?!orange)/).test('appleOrange123 '); // false (/Apple(?!orange)/).test('applepear345 '); //BENARArtikel di atas adalah klise tentang sintaks ekspresi reguler Javascript. Ini semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.