Nói chung, và với cài đặt mặc định, ^
và $
neo là một cách tốt để đảm bảo rằng regex khớp với toàn bộ chuỗi.
Tuy nhiên, một số lưu ý:
Nếu bạn có thay thế trong regex của mình, hãy đảm bảo đặt regex của bạn trong một nhóm không chụp trước khi bao quanh nó bằng ^
và $
:
^foo|bar$
tất nhiên là khác với
^(?:foo|bar)$
Ngoài ra, ^
và $
có thể mang một ý nghĩa khác (bắt đầu / kết thúc dòng thay vì bắt đầu / kết thúc chuỗi ) nếu các tùy chọn nhất định được đặt. Trong các trình soạn thảo văn bản hỗ trợ biểu thức chính quy, đây thường là hành vi mặc định. Trong một số ngôn ngữ, đặc biệt là Ruby, hành vi này thậm chí không thể bị tắt.
Do đó, có một tập hợp các neo khác được đảm bảo chỉ khớp ở phần đầu / phần cuối của toàn bộ chuỗi:
\A
khớp ở đầu chuỗi.
\Z
khớp ở cuối chuỗi hoặc trước khi ngắt dòng cuối cùng.
\z
khớp ở cuối chuỗi.
Nhưng không phải tất cả các ngôn ngữ đều hỗ trợ các neo này, đáng chú ý nhất là JavaScript.
string.Contains
sẽ hoạt động?