2 Stimmen

Javascript RegExp Wortgrenzproblem

Dies ist mein Code:

var boo = new RegExp("\\Bis\\B","gi");
var result = boo.exec("this AisA stackoverflow");
document.write(result);

Das Ergebnis ist: "is", aber ich möchte, dass die Funktion exec das gesamte übereinstimmende Muster zurückgibt, d.h. AisA, unter Verwendung der Nicht-Wortgrenze \B. Ich weiß, dass ich ein Muster wie .+is.+ verwenden kann, um AisA zurückzugeben, aber ich frage mich, wie ich dasselbe mit einer Nicht-Wortgrenze machen kann.

3voto

Niet the Dark Absol Punkte 310257

Versuchen Sie dies:

/.\Bis\B./

Dies überprüft das Nicht-Boundar und nimmt auch das Zeichen mit dem ..

0voto

Lucero Punkte 57715

Das könnte das sein, wonach du suchst?

\S*\Bist\B\S*

Da die Grenze keine Zeichen abgleicht, sondern nur eine Bedingung überprüft, musst du etwas anderes verwenden, um die Zeichen zu erhalten.

0voto

JDB Punkte 23215

Wortgrenzen sind das, was als Nullbreitenübereinstimmung bekannt ist, was bedeutet, dass sie eine Bedingung und nicht ein Zeichen erfüllen. Zum Beispiel überprüft in regex "\bw" "\b", dass es einige Leerzeichen gibt, die entweder davor oder danach an seiner Position im Ausdruck stehen. Es erfasst nichts.

Wenn Sie ein Wortzeichen erfassen möchten, versuchen Sie es mit \w.

Siehe: http://www.regexguru.com/2008/04/watch-out-for-zero-length-matches/

0voto

Ja͢ck Punkte 165747

Um ein Wort zu finden, das 'is' enthält:

/\b\w*is\w*/gi

Das letzte \b ist nicht notwendig, da es Teil von LA(\w*) ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X