Reguläre Ausdrücke sind aufgrund von Wortgrenzen \boder ähnlichen Geräten für viele Menschen optimaler . Wortgrenzen auftreten , wenn eine von 0-9, a-z, A-Z, _auf sind die Seite des nächsten Spiels, oder wenn ein alphanumerisches Zeichen Connects zu Zeile oder Zeichenfolge Ende oder am Anfang.
if (location.href.match(/(?:\b|_)franky(?:\b|_)))
Wenn Sie verwenden if(window.location.href.indexOf("sam"), erhalten Sie Übereinstimmungen für flotsamund sameunter anderem. tomwürde zu Tomate und morgen passen, ohne Regex.
Die Groß- und Kleinschreibung zu beachten ist so einfach wie das Entfernen der i.
Das Hinzufügen weiterer Filter ist so einfach wie
if (location.href.match(/(?:\b|_)(?:franky|bob|billy|john|steve)(?:\b|_)/i))
Reden wir darüber (?:\b|_). RegEx wird normalerweise _als definiert, word charactersodass keine Wortgrenze entsteht. Wir nutzen dies, (?:\b|_)um damit umzugehen. Um zu sehen, ob es entweder \boder _auf beiden Seiten der Zeichenfolge findet.
Andere Sprachen müssen möglicherweise so etwas wie verwenden
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.
All dies ist einfacher als zu sagen
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
Die Geschmacksrichtungen regulärer Ausdrücke in anderen Sprachen werden unterstützt \p{L}, Javascript jedoch nicht. Dies würde die Erkennung von Fremdzeichen erheblich erleichtern. Etwas wie[^\p{L}](filters|in|any|alphabet)[^\p{L}]
"window.location.contains is not a function"