Mục đích và chức năng của ^ và $ trong regex

^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$
sẽ như thế nào nếu mình bỏ dấu ^ vs $ trong regex đi ? mục đích và chức năng của ^$ trong regex ngoài việc mở đầu và kết thúc lệnh thì còn gì khác không ạ

Ở multiline mode thì nó trở thành bắt đầu và kết thúc dòng.

3 Likes

Nếu mình nhớ không nhầm thì ^$ dùng để so sánh khớp toàn bộ chuỗi

1 Like

Sẽ như thế nào nếu mình bỏ dấu ^ và $ trong regex

Nếu cậu bỏ đi, cậu sẽ nhận sai 1 số dạng email thôi :smiley:
Giờ tớ gọi tạm 2 pattern regex như thế này:

  • Pattern R(ight): ^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$
  • Pattern W(rong): [A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}

Thử validate 1 vài email nhé!

  • [email protected]: cả 2 pattern đều validate email này hợp lệ.
  • [email protected]: Validate fail với pattern R, và validate success với pattern W (dĩ nhiên, đây không phải email hợp lệ)

mục đích và chức năng của ^$ trong regex ngoài việc mở đầu và kết thúc lệnh thì còn gì khác không ạ

$ thì có mỗi 2 ý nghĩa:

  • $: kết thúc dòng
  • \$: ký tự dollar

^ có 3 ý nghĩa:

  • ^ (ở đầu dòng): mở đầu dòng
  • \^: ký tự ^
  • ^ (trong khối []): not (không chứa ký tự trong khối [])
4 Likes

Để đảm bảo nhận dạng ^$ thành kí tự thì phải thoát kí tự đó. Chỉ một số ít ngôn ngữ tự hiểu thành kí tự trong 1 ngữ cảnh nhất định. Một số ngôn ngữ không thoát thì sẽ bị ngoại lệ. Tốt nhất là thoát cho chắc.

\^\$

Có nhiều kí tự nằm trong dạng đặc biệt, thực hiện chức năng nhất định. Muốn nhận dạng thành 1 kí tự thì phải thoát bằng kí tự \.

3 Likes

Ồ, cảm ơn cậu nhé!
Tớ thực ra cũng có để dấu backslash ở ví dụ, nhưng trên web có vẻ đã xóa luôn dấu \ đó luôn :smiley:

2 Likes

Klq, như regex không chấp nhận kí tự thường (a-z) thì phải :thinking:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?