⊗jsSpREESCh 99 of 294 menu

Ký tự thoát đặc biệt trong biểu thức chính quy JavaScript

Giả sử chúng ta muốn làm sao cho ký tự đặc biệt biểu thị chính nó. Để làm điều này nó cần được thoát bằng dấu gạch chéo ngược. Hãy xem qua các ví dụ.

Ví dụ

Trong ví dụ sau, tác giả của biểu thức chính quy muốn mẫu tìm kiếm trông như thế này: chữ cái 'a', sau đó dấu cộng '+', sau đó chữ cái 'x'. Tuy nhiên, tác giả mã không thoát ký tự '+' và do đó mẫu tìm kiếm thực sự lại trông như thế này: chữ cái 'a' một hoặc nhiều lần, sau đó chữ cái 'x':

let str = 'a+x ax aax aaax'; let res = str.replace(/a+x/g, '!');

Kết quả, biến sẽ ghi lại như sau:

'a+x ! ! !'

Ví dụ

Và bây giờ tác giả đã thoát dấu cộng bằng dấu gạch chéo ngược. Bây giờ mẫu tìm kiếm trông như chúng ta mong muốn: chữ cái 'a', sau đó dấu cộng '+', sau đó chữ cái 'x'.

let str = 'a+x ax aax aaax'; let res = str.replace(/a\+x/g, '!');

Kết quả, biến sẽ ghi lại như sau:

'! ax aax aaax'

Ví dụ

Trong ví dụ này, mẫu trông như thế này: chữ cái 'a', sau đó dấu chấm '.', sau đó chữ cái 'x':

let str = 'a.x abx azx'; let res = str.replace(/a\.x/g, '!');

Kết quả, biến sẽ ghi lại như sau:

'! abx azx'

Ví dụ

Trong ví dụ sau, tác giả quên thoát dấu chấm và tất cả các chuỗi con đều khớp với biểu thức chính quy, vì dấu chấm không được thoát biểu thị bất kỳ ký tự nào:

let str = 'a.x abx azx'; let res = str.replace(/a.x/g, '!');

Kết quả, biến sẽ ghi lại như sau:

'! ! !'

Lưu ý

Hãy chú ý rằng nếu bạn quên dấu gạch chéo ngược cho dấu chấm (khi nó nên biểu thị chính nó) - điều này thậm chí có thể không được chú ý:

'a.x'.replace(/a.x/g, '!'); // trả về '!', như chúng ta muốn

Về mặt hình thức thì hoạt động đúng (vì dấu chấm biểu thị bất kỳ ký tự nào, kể cả dấu chấm thông thường '.'). Nhưng nếu thay đổi chuỗi, trong đó thực hiện thay thế - chúng ta sẽ thấy lỗi của mình:

'a.x abx azx'.replace(/a.x/g, '!'); // trả về '! ! !', trong khi mong đợi '! abx azx'

Danh sách ký tự đặc biệt và thông thường

Nếu thoát một ký tự thông thường - không có gì xấu xảy ra - nó vẫn sẽ biểu thị chính nó. Ngoại lệ - chữ số, không thể thoát chúng.

Thường nảy sinh nghi ngờ, liệu ký tự này có phải là đặc biệt hay không. Một số đi đến mức thoát tất cả các ký tự đáng ngờ một cách liên tục. Tuy nhiên, đây là thực hành không tốt (làm rối biểu thức chính quy với các dấu gạch chéo ngược).

Là ký tự đặc biệt: $ ^ . * + ? \ / {} [] () |

Không phải ký tự đặc biệt: @ : , ' " ; - _ = < > % # ~ `& !

Bài tập thực hành

Cho chuỗi:

let str = 'a.a aba aea';

Viết biểu thức chính quy tìm chuỗi 'a.a', không lấy các chuỗi còn lại.

Cho chuỗi:

let str = '2+3 223 2223';

Viết biểu thức chính quy tìm chuỗi '2+3', không lấy các chuỗi còn lại.

Cho chuỗi:

let str = '23 2+3 2++3 2+++3 345 567';

Viết biểu thức chính quy tìm các chuỗi '2+3', '2++3', '2+++3', không lấy các chuỗi còn lại (+ có thể có bất kỳ số lượng).

Cho chuỗi:

let str = '23 2+3 2++3 2+++3 445 677';

Viết biểu thức chính quy tìm các chuỗi '23', '2+3', '2++3', '2+++3', không lấy các chuỗi còn lại.

Cho chuỗi:

let str = '*+ *q+ *qq+ *qqq+ *qqq qqq+';

Viết biểu thức chính quy tìm các chuỗi '*q+', '*qq+', '*qqq+', không lấy các chuỗi còn lại.

Cho chuỗi:

let str = '[abc] {abc} abc (abc) [abc]';

Viết biểu thức chính quy tìm các chuỗi trong dấu ngoặc vuông và thay thế chúng bằng '!'.

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối