Diese Regex sollte arbeiten, was Sie kratzen:
unitid="[^"]+"
Es unitid="
buchstäblich übereinstimmen, Zeichen für Zeichen. Dann wird es [^"]
Wie für die JS wie folgt überein:
const value = '<ns2:NewsPaper unitid="112234">';
const regex = /unitid="[^"]+?"/;
const matches = value.match(regex);
console.log(matches);
// => ["unitid=\"112234\""]
Beachten Sie, wie die Erfassung Pars sind nicht erforderlich. Dies liegt an der Implementierung der match(..)
-Funktion von JS. Die Ausgabe, wenn Sie die Erfassung Pars umfassen wird:
["unitid=\"112234\"", "unitid=\"112234\""]
Sie sollten das gleiche Verhalten erwarten, selbst wenn Sie die exec(..)
Funktion. In bestimmten Fällen wie diesen kann das Weglassen der gefangenen Parens wünschenswert sein. Das erste Element des Arrays matches
ist, was auch immer Ihre Regex konsumiert; Alles, was diesem ersten Element folgt, sind die Elemente, die deine Regex erfasst hat.
Here's a link to the JSBin.
Warum versuchen Sie '' 'nach' NewsPaper' zu finden, wenn die Eingabezeichenfolge kein '>' hat? Die Zeichenkette hat kein '*', warum benutzt man '\ *' dann im Muster? Benutze '/ NewsPaper \ b [^ <] * \ bunitid =" ([^ "] +)"/'und benutze' .exec (value) [1] '. –
Das ist ein Nitpick, aber du solltest es nicht brauchen "var" und "lass" so zu verwenden. Ich nehme an, dass du sie austauschbar verwendest. Ich würde bewusster mit meinem Gebrauch von 'var',' let' und 'const' umgehen. Ehrlich gesagt, wenn du es bist Wenn Sie eine Version von 'node' verwenden, die ES6 unterstützt, sollten Sie einfach' let' und 'const' verwenden und vermeiden,' var' zu verwenden. – wpcarro
Auch 'var value =" ";' ist nicht gültig JS.Sie müssen die internen Doppel-Anführungszeichen wie diese "\" 'oder die Umschreibung in einfachen Anführungszeichen wie diese" var value = '
wpcarro