Reguläre Ausdrücke sind aufgrund von Wortgrenzen \b
oder ä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 flotsam
und same
unter anderem. tom
wü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 character
sodass keine Wortgrenze entsteht. Wir nutzen dies, (?:\b|_)
um damit umzugehen. Um zu sehen, ob es entweder \b
oder _
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"