Biểu thức chính quy sẽ tối ưu hơn cho nhiều người vì ranh giới từ \b
hoặc các thiết bị tương tự. Lời ranh giới xảy ra khi nào 0-9
, a-z
, A-Z
, _
đang trên mà bên trong những trận đấu tiếp theo, hoặc khi một nhân vật tự chữ và số kết nối với dòng hoặc cuối chuỗi hoặc bắt đầu.
if (location.href.match(/(?:\b|_)franky(?:\b|_)))
Nếu bạn sử dụng if(window.location.href.indexOf("sam")
, bạn sẽ nhận được các trận đấu cho flotsam
và same
, trong số các từ khác. tom
sẽ phù hợp với cà chua và ngày mai, không có regex.
Làm cho nó phân biệt chữ hoa chữ thường đơn giản như loại bỏ i
.
Hơn nữa, việc thêm các bộ lọc khác cũng dễ như
if (location.href.match(/(?:\b|_)(?:franky|bob|billy|john|steve)(?:\b|_)/i))
Hãy nói về (?:\b|_)
. RegEx thường định nghĩa _
là word character
vì vậy nó không gây ra ranh giới từ. Chúng tôi sử dụng điều này (?:\b|_)
để đối phó với điều này. Để xem nếu nó tìm thấy \b
hoặc _
ở hai bên của chuỗi.
Các ngôn ngữ khác có thể cần phải sử dụng một cái gì đó như
if (location.href.match(/([^\wxxx]|^)(?:franky|bob|billy|john|steve)([^\wxxx]|$)/i))
//where xxx is a character representation (range or literal) of your language's alphanumeric characters.
Tất cả điều này dễ hơn là nói
var x = location.href // just used to shorten the code
x.indexOf("-sam-") || x.indexOf("-sam.") || x.indexOf(" sam,") || x.indexOf("/sam")...
// and other comparisons to see if the url ends with it
// more for other filters like frank and billy
Hương vị của các ngôn ngữ thông thường khác hỗ trợ Biểu thức chính quy \p{L}
nhưng javascript thì không, điều này sẽ giúp cho việc phát hiện các ký tự nước ngoài dễ dàng hơn nhiều. Cái gì đó như[^\p{L}](filters|in|any|alphabet)[^\p{L}]
"window.location.contains is not a function"