Pengenalan kepada Ungkapan Biasa dalam JavaScript
Ungkapan biasa ialah arahan untuk carian dan penggantian yang kompleks (atau hanya carian). Ia membolehkan anda melakukan perkara yang sangat menarik, tetapi malangnya, agak sukar untuk dikuasai.
Terdapat beberapa kaedah JavaScript untuk
bekerja dengan ungkapan biasa. Kita akan mula
berkenalan dengannya menggunakan contoh replace
- anda sudah biasa dengan kaedah ini: parameter pertamanya
menerima apa yang perlu ditukar, dan yang kedua
- kepada apa yang perlu ditukar. Dan kaedah itu sendiri digunakan
pada rentetan di mana penggantian dilakukan:
'bab'.replace('a', '!'); // mengembalikan 'b!b'
Parameter pertama kaedah ini boleh menghantar
bukan hanya rentetan, tetapi ungkapan biasa.
Ungkapan biasa ialah satu set
arahan yang terletak di dalam garis condong /. Garis
condong ini dipanggil pembatas bagi ungkapan
biasa.
Ungkapan biasa sendiri terdiri daripada dua jenis aksara: mereka yang mewakili diri mereka sendiri dan aksara-arahan, yang dipanggil aksara khas.
Huruf dan nombor mewakili diri mereka sendiri. Dalam contoh
berikut, kita akan menggunakan ungkapan biasa
untuk menggantikan huruf 'a' dengan !:
'bab'.replace(/a/, '!'); // mengembalikan 'b!b'
Titik pula ialah aksara khas
dan mewakili sebarang aksara. Dalam
contoh berikut, kita akan mencari rentetan menggunakan corak ini:
huruf 'x', kemudian sebarang aksara, kemudian
sekali lagi huruf 'x':
'xax eee'.replace(/x.x/, '!'); // mengembalikan '! eee'
Selepas pembatas, anda boleh menulis pengubah
- arahan yang mengubah sifat umum
ungkapan biasa. Sebagai contoh, pengubah
g menghidupkan mod carian dan penggantian
global - tanpanya, regex hanya mencari
padanan pertama, dan dengannya - semua padanan.
Dalam contoh berikut, pengubah
g tidak dinyatakan dan regex hanya akan menemui padanan
pertama:
'aab'.replace(/a/, '!'); // mengembalikan '!ab'
Dan sekarang regex akan menemui semua padanan:
'aab'.replace(/a/g, '!'); // mengembalikan '!!b'
Diberi rentetan:
let str = 'ahb acb aeb aeeb adcb axeb';
Tulis regex yang akan mencari rentetan
'ahb', 'acb', 'aeb'
mengikut corak: huruf 'a', sebarang aksara,
huruf 'b'.
Diberi rentetan:
let str = 'aba aca aea abba adca abea';
Tulis regex yang akan mencari rentetan
'abba', 'adca', 'abea'
mengikut corak: huruf 'a', 2
sebarang aksara, huruf 'a'.
Diberi rentetan:
let str = 'aba aca aea abba adca abea';
Tulis regex yang akan mencari rentetan
'abba' dan 'abea', tanpa mengambil
'adca'.