Ekspresi Reguler akan lebih optimal bagi banyak orang karena batasan kata \batau perangkat serupa. Batas kata terjadi ketika salah 0-9, a-z, A-Z, _berada di sisi dari pertandingan berikutnya, atau ketika menghubungkan karakter alfanumerik dengan garis atau tali akhir atau awal.
if (location.href.match(/(?:\b|_)franky(?:\b|_)))
Jika Anda menggunakan if(window.location.href.indexOf("sam"), Anda akan mendapatkan kecocokan untuk flotsamdan same, di antara kata lain. tomakan cocok dengan tomat dan besok, tanpa regex.
Membuatnya case-sensitive semudah menghapus i.
Selanjutnya, menambahkan filter lain semudah
if (location.href.match(/(?:\b|_)(?:franky|bob|billy|john|steve)(?:\b|_)/i))
Mari kita bicarakan (?:\b|_). RegEx biasanya didefinisikan _sebagai word charactersehingga tidak menyebabkan batas kata. Kami menggunakan ini (?:\b|_)untuk menangani ini. Untuk melihat apakah ia menemukan \batau _di kedua sisi string.
Bahasa lain mungkin perlu menggunakan sesuatu seperti
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.
Semua ini lebih mudah daripada mengatakannya
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
Citarasa Regular Expressions bahasa lain mendukung \p{L}tetapi javascript tidak, yang akan membuat tugas mendeteksi karakter asing lebih mudah. Sesuatu seperti[^\p{L}](filters|in|any|alphabet)[^\p{L}]
"window.location.contains is not a function"