/\Bon/
matches "auf" in "mittags" und /ye\B/
matches "ye" in "möglicherweise gestern". Warum passiert das?
, dass die richtige und erwartete Verhalten ist:
console.log("at noon".match(/\Bon/)[0]);
console.log("possibly yesterday".match(/ye\B/)[0]);
Im Gegensatz zu Zeichenklassen wie \w
, die einen einzelnen "word" character übereinstimmen oder \s
, die einen einzelnen Raumzeichen übereinstimmt, ist \B
anchor point es passt nicht zu einem Zeichen, sondern behauptet, dass sich dieser Anker an einer bestimmten Stelle befindet. Im Fall von \B
behauptet es, dass dieser Anker nicht an einer Wortgrenze ist.
Eine Wortgrenze wäre entweder eine Stelle, an der "word character" neben einem Leerzeichen steht, oder der Anfang oder das Ende der Zeichenfolge.
Also, /\Bon/
bedeutet effektiv finden Sie ein "on", die nicht am Anfang eines Wortes ist.Deshalb stimmt das "on" in "no on" überein; aber so etwas wie die „on“ in „an einem“ nicht:
console.log("at one".match(/\Bon/));
In gleicher Weise /ye\B/
bedeutet effektiv eine „ye“ finden, die nicht am Ende eines Wortes . Also, die „sie“ in „möglicherweise ihr sterday“ paßt, weil es nicht am Ende des Wortes ist, während die „sie“ am Ende von „möglicherweise goodbye“ nicht:
console.log("possibly goodbye".match(/ye\B/));
Es sollte auch hinzugefügt werden, dass \B
nicht mit \b
verwechselt werden sollte, haben sie unterschiedliche Bedeutungen. \b
entspricht einem Ankerpunkt an einer Wortgrenze. Also, wenn Sie ein Wort finden wollen, die mit „auf“ könnte man /\bon/
verwenden:
console.log("one at noon".match(/\bon/)); // finds the "on" in one, but not the "on" in noon
Ebenso kann es etwas am Ende eines Wortes finden verwendet werden:
console.log("goodbye yesterday".match(/ye\b/)); // finds the "ye" in goodbye, but not the "ye" in yesterday
wie das Ding funktioniert, bevor „auf“ das ist o und Sache nach „auf“ das ist nichts. ist ein Teil des gleichen Wortes? –
@AnkurMarwaha Ich bin nicht sicher, was Sie fragen ... aber versuchen, die Dinge für Sie aufzuräumen, in diesem Beispiel gibt es zwei Wörter, "at" und "Mittag". Das "An" ist Teil des Wortes "Mittag". Die Wortgrenzen liegen vor dem ersten "n" und nach dem letzten "n". Die Nicht-Wort-Grenzen würden zwischen dem ersten "n" und dem ersten "o" liegen, zwischen diesem "o" und dem nächsten "o" und dann zwischen diesem und dem letzten "n". '/ \ Bon /' stimmt mit der Nicht-Wort-Grenze zwischen den 2 "o" s und dann mit dem "on" überein. '\ B' ist ein Anker mit der Breite Null, was bedeutet, dass bei der Übereinstimmung nichts zu der zurückgegebenen Übereinstimmungszeichenfolge hinzugefügt wird. –