Semantik dan penggunaan objek RegExp:
Periksa kecocokan string, dapatkan sebagian konten dalam string, dan buat string baru berdasarkan string asli (termasuk penambahan, penghapusan, dan modifikasi)
Ada dua cara utama untuk membuat objek RegExp:
gunakan literal, seperti /w/g
Gunakan konstruktor, seperti RegExp baru(/w/)
Ada beberapa hal yang perlu diperhatikan ketika membuat objek RegExp:
literal sering digunakan untuk membuat objek RegExp statis yang tidak dihasilkan oleh runtime.
Bendera dapat ditambahkan langsung setelah literal untuk membatasi hasil eksekusi string yang cocok. Bendera yang umum digunakan termasuk g dan i, yang masing-masing digunakan untuk mewakili pencocokan global (global) dan pencocokan tidak peka huruf besar-kecil (tidak peka huruf besar-kecil).
Parameter pertama dari konstruktor RegExp menyediakan pola objek. Jika pola adalah literal RegExp, parameter kedua (yaitu, menentukan tanda) tidak dapat diberikan. Jika polanya adalah string, Anda dapat menggunakan parameter kedua
Konstruktor RegExp sering digunakan untuk membuat objek RegExp dinamis yang dihasilkan oleh runtime.
Jika pola RegExp adalah string, semua "" secara literal harus ditulis sebagai "\", karena "" perlu di-escape dalam string. Kedua metode di atas membuat objek javascript, jadi /w/ == /w/Return
fungsi terkait objek RegExp palsu:
Untuk memeriksa kecocokan string, Anda dapat menggunakan metode regExp.test(string), yang memeriksa apakah string cocok dengan pola yang disediakan oleh regExp. Anda juga dapat menggunakan metode string.search(regExp), yang akan mengembalikan -1 jika keduanya tidak cocok.
Untuk mendapatkan bagian dari string, Anda dapat menggunakan metode regExp.exec(string), atau Anda dapat menggunakan metode string.match(regExp) Untuk membuat string baru pada string asli, biasanya menggunakan string.replace(searchValue, gantiNilai) metode
Semantik pola disediakan dalam objek RegExp:
RegExp dapat mendefinisikan beberapa Alternatif yang dipisahkan oleh "|". Operasi ini memiliki prioritas terendah, jadi jika "|" ada, maka RegExp akan dibagi menjadi beberapa bagian Terdiri dari istilah, istilah dibagi menjadi pernyataan (digunakan untuk kualifikasi posisi), atom (unit pencocokan), dan atom dengan pembilang (pengubah)
Penegasan dibagi menjadi "^" yang digunakan untuk mencocokkan awal string. Dalam multiInput (yaitu, ketika bendera berisi m), itu juga dapat mencocokkan awal baris akhir string. Dalam multiInput (yaitu, ketika bendera berisi m), Ini juga dapat mencocokkan akhir baris. "b" digunakan untuk mencocokkan interval w dan W konten apa pun dalam string, tetapi hanya digunakan untuk menentukan kecocokan suatu posisi.
Situasi atom lebih rumit. Mari kita lihat Kuantitas atom, yang dapat mencakup * + ? 1 atau lebih Untuk pengulangan di atas, ? berarti 0 atau 1 kali, {n} berarti tepat n pengulangan, {m,} berarti m atau lebih pengulangan, {m,n} berarti banyaknya pengulangan antara m dan n (termasuk m dan n ), Quantifier di atas juga dapat diikuti dengan ? untuk memulai mode non-serakah.
Atom berisi patternCharacter (karakter biasa, yaitu karakter tanpa semantik khusus dalam pola, yang akan dicocokkan secara harfiah)
"." cocok dengan semua karakter non-terminator garis
AtomEscape berisi angka 1 (digunakan untuk merujuk pada kecocokan yang berhasil dalam tanda kurung sebelumnya). Referensi ke beberapa karakter n f r t v xNN uXXXX cX, dll. Beberapa karakter dengan arti khusus, seperti d D s S w W
CharacterClass berisi dua bentuk: [...] dan [^...]. Ini dapat berisi banyak karakter, seperti -, n dan referensi karakter lainnya, b, d dan karakter makna khusus lainnya. Perhatikan bahwa jika ada karakter di sekitar "-", semantiknya berubah dari karakter tertentu ke karakter tertentu. Jika tidak ada karakter di kiri atau kanan "-", maka "-" hanya mewakili karakter tanda hubung.
(grup), jika Anda melakukan pengelompokan dalam mode di atas, Anda dapat menggunakan Quantifier untuk memodifikasinya setelah grup.
(?:grup), hanya digunakan sebagai grup, dan konten yang cocok dengan grup tersebut tidak akan direkam dan tidak akan disertakan dalam 1..n
(?=grup), memerlukan pencocokan tetapi tidak menyertakan konten pencocokan grup dalam string pencocokan yang dikembalikan
(?!grup), tidak memerlukan pencocokan dan tidak akan menyertakan konten pencocokan grup dalam string pencocokan yang dikembalikan. Sekarang saya ingin berbicara tentang dua mode operasi RegExp yang lebih penting:
Alternatif Pencocokan selalu dari kiri ke kanan pencocokan pertama tidak akan lagi mencoba pencocokan berikutnya, seperti
/ab|abc/.exec("abc"). String "abc" di atas hanya cocok dengan pola ab, dan tidak akan cocok dengan abc
. Jika ? tidak ditambahkan setelah Quantifier, mode serakah akan digunakan. Setelah menambahkan ?, mode non-serakah akan
digunakan selalu cocokkan sebanyak mungkin kecocokan terlebih dahulu (yaitu mode serakah), sehingga akan cocok dengan "abcbcbc". Jika diubah menjadi
/w+?bc/.exec("abcbcbc"), maka akan cocok sesedikit mungkin ( yaitu mode non-serakah), jadi hanya akan cocok dengan "abc".
Untuk persyaratan penguraian string secara umum, Anda biasanya dapat menggunakan metode exec atau match untuk mengurai. Jika stringnya besar, Anda sering kali perlu menggunakan struktur loop untuk penguraian. RegExp sangat kuat bila dikombinasikan dengan pernyataan while dan lainnya.
Ketika Anda ingin mengubah string yang ada menjadi string lain dengan memodifikasinya, biasanya Anda selalu menggunakan metode replace. Metode ini adalah metode yang paling penting dalam RegExp menurut saya. Polimorfismenya membuatnya memiliki banyak bentuk kebutuhan memodifikasi string.