2016-05-12 13 views
0

Ich habe eine Textgleichung wie: 10x^2-8y^2-7k^4=0. Wie kann ich die ^ finden und ersetzen Sie sie mit <sup>2</sup> in der gesamten Zeichenfolge mit Regex. Das Ergebnis sollte wie:Finden Sie das Wort und ersetzen Sie mit HTML-Tag mit Regex

enter image description here

ich str = str.replace(/\^\s/g, "<sup>$1</sup> ") versucht, aber ich bin nicht das erwartete Ergebnis.

Irgendwelche Ideen, die helfen können, mein Problem zu lösen?

+0

Versuchen Sie '.replace (/ \^(\ d +)/g, '$ 1')'. Müssen Sie auch Whitespace um diese Werte auf eine bestimmte Weise verwalten? –

+0

Nein es ist genug..ich habe meine Antwort, danke für deine Hilfe. – prasanth

+0

Wenn ich mit Doppel-Tag-Funktion in der gleichen einzelnen Regexp wie folgt angewendet werden kann: - '"^"Ersetzen durch $ 1' und '" ⌄ "ersetzen durch 1 $ ' .Was soll ich tun? Bitte sag, wie kann ich den Code ändern? – prasanth

Antwort

2

Ich glaube, du bist für so etwas wie

\^(\d+) 

suchen Sie die ^ einstimmt, fängt den Exponenten und ersetzen mit

<sup>$1</sup> 

See it here at regex101.

Edit:

Um Ihre neue Anforderungen gerecht zu werden, überprüfen this fiddle. Es behandelt die sub auch mit Ersetzen durch eine Funktion.

+0

Danke für die richtige Antwort. – prasanth

+0

Gern geschehen. Bitte markieren Sie es als akzeptiert. – ClasG

+0

Vielen Dank .klarer und einfacher Code. Und erfüllte auch meine Erwartung. – prasanth

1

Ihr aktuelles Muster entspricht einem Caret, gefolgt von einem Leerzeichen (Leerzeichen, Tabulator, neue Zeile usw.). Sie möchten jedoch einen Caret gefolgt von einem einzelnen Zeichen oder mehreren Zeichen in Akkorden als Zeichenfolge angeben ist in TeX.

/\^(?:([\w\d])|\{([\w\d]{2,})\})/g 

Jetzt sollte str = str.replace(/\^(?:([\w\d])|\{([\w\d]{2,})\})/g, "<sup>$1</sup>"); die Arbeit tun.

Sie können eine allgemeinere Funktion aus diesem Ausdruck erstellen, die Zeichen, denen ein bestimmtes Zeichen vorangestellt ist, mit einem bestimmten Tag umbrechen kann.

function wrapPrefixed(string, prefix, tagName) { 
    return string.replace(new RegExp("\\" + prefix + "(?:([\\w\\d])|\\{([\\w\\d]{2,})\\})"), "<" + tagname + ">$1</" + tagname + ">"); 
} 

Zum Beispiel ruft wrapPrefixed("1_2 + 4_{3+2}", "_", "sub"); Ergebnisse in 1<sub>2</sub> + 4<sub>3+2</sub>.

+0

Danke Michael. Wenn ich mit doppelter Umbaufunktion in der gleichen einzelnen Regexp wie dieses anwenden kann: - '"^"ersetzen Sie mit $ 1' und '" ersetzen "durch 1 $ ' .Whas sollte ich tun? Bitte sag, wie kann ich den Code ändern? – prasanth

+0

Hmm ...Was ist mit den geschweiften Klammern Teil? Wie ist das nötig? – ClasG

+0

no.its nicht notwendig.können Sie mir helfen? – prasanth