immer das Schließen ]
in einer JS regulären Ausdruck Zeichenklasse ecape (beachten Sie, dass eine ]
außerhalb Zeichenklasse nicht analysiert werden als eine wörtliches ]
entgangen sein muss):
console.log("text1[value1]".match(/\[[^\]]+\]/));
console.log("text1[value2]".match(/\[[^\]]+]/));
console.log("text1[value2\\value3]".match(/\[[^\]]+]/));
Andernfalls schließt es die Zeichenklasse vorzeitig und kann Probleme wie die, die Sie haben, verursachen. Ihr \[[^]]+\]
Muster entspricht [
, dann ein beliebiges Zeichen (wie [^]
ist ein gültiges Konstrukt in JS, das mit einem beliebigen Zeichen einschließlich Zeilenvorschub und CR übereinstimmt) und dann 1 oder mehrere Literal ]
Symbole (wie ]
außerhalb einer Zeichenklasse muss nicht maskiert werden) und dann ]
. Siehe your regex demo, die eine Übereinstimmung in "str[\n]]]]]]]]]"
findet.
Escape the ']' in der Zeichenklasse. ' "text [Wert]". match (/ \ [[^ \]] + \] /) ; ' –
Ich habe es vorher versucht und es hat funktioniert, außer dass es auch das \ negiert. –
Sie sagen das nicht. Wie? Bitte senden Sie das Schnipsel, das zeigt, was mit dem'/\ [[^ \]] + falsch ist \]/'regex. Es wird [' [str \ str] 'in' str [str \ str] '] (https://regex101.com/r/TofVz3/1). –