Melarikan Aksara Khas dalam Ungkapan Biasa JavaScript
Katakan kita mahu aksara khas mewakili dirinya sendiri. Untuk ini, ia perlu dilarikan menggunakan garis condong belakang. Mari kita lihat contoh.
Contoh
Dalam contoh berikut, pengarang ungkapan biasa mahu
corak carian kelihatan seperti ini: huruf
'a', kemudian tanda tambah '+', kemudian
huruf 'x'. Walau bagaimanapun, pengarang kod
tidak melarikan aksara '+' dan oleh itu
corak carian sebenarnya kelihatan seperti ini:
huruf 'a' satu atau lebih kali, kemudian
huruf 'x':
let str = 'a+x ax aax aaax';
let res = str.replace(/a+x/g, '!');
Hasilnya, yang berikut akan disimpan ke dalam pembolehubah:
'a+x ! ! !'
Contoh
Sekarang pengarang telah melarikan tanda tambah dengan
garis condong belakang. Sekarang corak carian kelihatan
seperti yang sepatutnya: huruf 'a', kemudian tanda tambah
'+', kemudian huruf 'x'.
let str = 'a+x ax aax aaax';
let res = str.replace(/a\+x/g, '!');
Hasilnya, yang berikut akan disimpan ke dalam pembolehubah:
'! ax aax aaax'
Contoh
Dalam contoh ini, corak kelihatan seperti ini: huruf
'a', kemudian titik '.', kemudian
huruf 'x':
let str = 'a.x abx azx';
let res = str.replace(/a\.x/g, '!');
Hasilnya, yang berikut akan disimpan ke dalam pembolehubah:
'! abx azx'
Contoh
Dalam contoh seterusnya, pengarang terlupa untuk melarikan titik dan semua substring ditangkap oleh ungkapan biasa, kerana titik yang tidak dilarikan mewakili sebarang aksara:
let str = 'a.x abx azx';
let res = str.replace(/a.x/g, '!');
Hasilnya, yang berikut akan disimpan ke dalam pembolehubah:
'! ! !'
Perhatian
Perhatikan bahawa jika anda terlupa garis condong belakang untuk titik (apabila ia sepatutnya mewakili dirinya sendiri) - ini mungkin tidak disedari:
'a.x'.replace(/a.x/g, '!'); // mengembalikan '!', seperti yang kita mahu
Secara visual ia berfungsi dengan betul (kerana titik
mewakili sebarang aksara, termasuk titik biasa
'.'). Tetapi jika kita menukar rentetan,
di mana penggantian berlaku - kita akan melihat
ralat kami:
'a.x abx azx'.replace(/a.x/g, '!'); // mengembalikan '! ! !', tetapi dijangkakan '! abx azx'
Senarai aksara khas dan biasa
Jika melarikan aksara biasa - tiada apa yang teruk akan berlaku - ia tetap akan mewakili dirinya sendiri. Pengecualian - digit, mereka tidak boleh dilarikan.
Sering timbul keraguan, sama ada aksara tertentu adalah khas. Sesetengah sehingga melarik semua aksara yang mencurigakan berturut-turut. Walau bagaimanapun, ini adalah amalan yang tidak baik (mengacaukan ungkapan biasa dengan garis condong belakang).
Aksara khas ialah: $ ^ . * + ? \
/ {} [] () |
Bukan aksara khas: @ : , ' " ;
- _ = < > % # ~ `& !
Tugas praktikal
Diberi rentetan:
let str = 'a.a aba aea';
Tulis ungkapan biasa yang akan mencari rentetan
'a.a', tanpa menangkap yang lain.
Diberi rentetan:
let str = '2+3 223 2223';
Tulis ungkapan biasa yang akan mencari rentetan
'2+3', tanpa menangkap yang lain.
Diberi rentetan:
let str = '23 2+3 2++3 2+++3 345 567';
Tulis ungkapan biasa yang akan mencari rentetan
'2+3', '2++3', '2+++3',
tanpa menangkap yang lain (+ boleh ada sebarang
kuantiti).
Diberi rentetan:
let str = '23 2+3 2++3 2+++3 445 677';
Tulis ungkapan biasa yang akan mencari rentetan
'23', '2+3', '2++3',
'2+++3', tanpa menangkap yang lain.
Diberi rentetan:
let str = '*+ *q+ *qq+ *qqq+ *qqq qqq+';
Tulis ungkapan biasa yang akan mencari rentetan
'*q+', '*qq+', '*qqq+',
tanpa menangkap yang lain.
Diberi rentetan:
let str = '[abc] {abc} abc (abc) [abc]';
Tulis ungkapan biasa yang akan mencari rentetan
dalam kurungan segi empat sama dan menggantikannya dengan '!'.