Wyrażenia regularne będą bardziej optymalne dla wielu osób ze względu na granice słów \b
lub podobne urządzenia. Granice słów wystąpić, gdy którykolwiek z 0-9
, a-z
, A-Z
, _
są na tej stronie następnego meczu, lub gdy alfanumerycznym łączy postać do linii lub na końcu lub na początku łańcucha.
if (location.href.match(/(?:\b|_)franky(?:\b|_)))
Jeśli używasz if(window.location.href.indexOf("sam")
, dostaniesz wyniki dla flotsam
i same
, między innymi słowami. tom
pasuje do pomidorów i jutra, bez wyrażenia regularnego.
Rozróżnianie wielkości liter jest tak proste, jak usunięcie i
.
Ponadto dodawanie innych filtrów jest tak proste, jak
if (location.href.match(/(?:\b|_)(?:franky|bob|billy|john|steve)(?:\b|_)/i))
Porozmawiajmy o tym (?:\b|_)
. RegEx zazwyczaj definiuje _
jako word character
tak, że nie powoduje granicy słowa. Używamy tego, (?:\b|_)
aby sobie z tym poradzić. Aby sprawdzić, czy znajdzie \b
albo _
po dowolnej stronie ciągu.
Inne języki mogą wymagać użycia czegoś takiego
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.
Wszystko to jest łatwiejsze niż mówienie
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
Smaki innych wyrażeń w innych językach obsługują, \p{L}
ale javascript nie obsługuje, co znacznie ułatwi wykrywanie obcych znaków. Coś jak[^\p{L}](filters|in|any|alphabet)[^\p{L}]
"window.location.contains is not a function"