"This is the best moth".match(/\bth/gi);
oder mit einer Variablen für die Zeichenfolge
var string = "This is the best moth";
alert(string.match(/\bth/gi));
\b
in einem regex ist eine Wortgrenze so \bth
nur einen th
übereinstimmen, die am Anfang eines Wortes.
gi
ist für ein globales Spiel (suchen Sie nach allen Vorkommen) und Groß- und Kleinschreibung
(ich als Erinnerung moth
dort warf, dass es nicht abgestimmt zu überprüfen)
jsFiddle example
Edit:
Also, die ein bove gibt nur den Teil zurück, den Sie gefunden haben (th
). Wenn Sie die gesamten Wörter zurückgeben möchten, müssen Sie das gesamte Wort übereinstimmen.
Hier wird es schnell knifflig. Zunächst ohne HTML-Entität Brief:
string.match(/\bth[^\b]*?\b/gi);
Example
Um das ganze Wort aus dem Wortgrenze \b
greift die th
gefolgt von Nichtwortgrenzen [^\b]
geht übereinstimmen, bis Sie an einem anderen Wortgrenze \b
bekommen. Die *
bedeutet, dass Sie nach 0 oder mehr der vorherigen (nicht Wort Grenzen) Suche nach ?
Mark bedeutet, dass dies eine träge Übereinstimmung ist. Mit anderen Worten, es wird nicht so groß, wie es möglich wäre, sondern es stoppt bei der ersten Gelegenheit.
Wenn Sie HTML-Entity-Zeichen wie ä (ä
) haben, werden die Dinge wirklich schnell kompliziert, und Sie müssen Whitespace oder Whitespace und eine Reihe von definierten Zeichen verwenden, die an Wortgrenzen liegen.
string.match(/\sth[^\s]*|^th[^\s]*/gi);
Example with HTML entities.
Da wir nicht Wortgrenzen verwenden, müssen wir kümmern uns um den Anfang des Strings separat nehmen (|^
).
Oben wird der Leerraum am Anfang der Wörter erfasst. Mit \b
wird kein Leerraum erfasst, da \b
keine Breite hat.
+1 danke für die Einführung mich zu \ b :) –
@Michael - YW! Dies ist eine gute Referenz für Regex - http://www.regular-expressions.info/reference.html –
Das funktioniert gut, außer dass es auch Zeichen nach fremden übereinstimmen wird. Zum Beispiel, wenn meine Zeichenfolge "Männ" ist, und ich nach "n" suche, wird es dem n nach Mä ... entsprechen. Irgendwelche Ideen? – Abadaba