Expressões regulares serão mais ideais para muitas pessoas devido a limites de palavras \bou dispositivos semelhantes. Limites de palavra ocorrer quando qualquer um 0-9, a-z, A-Z, _estão em que o lado do próximo jogo, ou quando um alfanuméricos Ligações personagem a linha ou fim string ou começando.
if (location.href.match(/(?:\b|_)franky(?:\b|_)))
Se você usar if(window.location.href.indexOf("sam"), receberá correspondências para flotsame same, entre outras palavras.tomcombinaria tomate e amanhã, sem regex.
Tornar a distinção entre maiúsculas e minúsculas é tão simples quanto remover o i .
Além disso, adicionar outros filtros é tão fácil quanto
if (location.href.match(/(?:\b|_)(?:franky|bob|billy|john|steve)(?:\b|_)/i))
Vamos conversar (?:\b|_). RegEx normalmente define _como um, word characterpara que não cause um limite de palavras. Usamos isso (?:\b|_)para lidar com isso. Para ver se encontra \bou_ em ambos os lados da cadeia.
Outros idiomas podem precisar usar algo como
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.
Tudo isso é mais fácil do que dizer
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
Os sabores de expressões regulares de outros idiomas são compatíveis, \p{L}mas o javascript não, o que tornaria a tarefa de detectar caracteres estrangeiros muito mais fácil. Algo como[^\p{L}](filters|in|any|alphabet)[^\p{L}]
"window.location.contains is not a function"