2016-08-10 16 views
1

Ich weiß nicht, wie diese richtig zu fragen, aber ich brauche den Text innerhalb des [] Tages zu bekommen und es eine Variableerhält den Text nach innen ‚[]‘ Tag mit Hilfe von Javascript

Fuchs ex machen. Ich habe:

<p>[something][written]</p> 

Ich brauche das Wort etwas von [etwas] zu bekommen und machen es zu einem var und gleiche gilt für [geschrieben], so kann ich so etwas wie dieses:

var text1 = something /*-only the word-*/ 
var text2 = written /*-only the word-*/ 

es gerne zu verwenden:

<span>there is '+text1+' '+text2+' here.</span> 

natürlich ist es nicht, wie ich es benutzen werden, aber sie sind irgendwie ähnlich. Ist es möglich? Entschuldigung, ich bin komplett neu. Danke im Voraus.

+0

'var etwas = ???' –

+0

Können die Klammern verschachtelt werden? Wenn nicht, können Sie eine sehr einfache Regex verwenden. Andernfalls müssen Sie die Eingabe tatsächlich selbst in Tokens umwandeln. – CollinD

+0

Hallo Bhojendra Nepal .. was ich meine, ist etwas wie var text1 = etwas (das Wort nur ohne die Klammern) ich habe nicht wirklich verstanden, was Sie sagen @collind Entschuldigung .. – user3605994

Antwort

2

EDIT: Hier ist eine Lösung, die Sie selbst mit Konsole

<script> 
var text = "<p>[Something][Written]</p>"; 
var inBrackets = text.split('['); 
for (var i = 1; i < inBrackets.length; i++) 
{ 
    console.log(inBrackets[i].split(']')[0]); 
} 
</script> 

Goodluck versuchen können!

EDIT: Hier erhalten Sie jedes Wort, das in einer Klammer ist und ordnen Sie sie einer var.

+0

Ich korrigierte meine Antwort, Sorry für die Eariler Downvote . Dies ist nur in Javascript geschrieben und kann problemlos ausgeführt werden. Vielen Dank. –

2

regex \[(\w+)\] verwenden, werden die erhaltenen Wörter innerhalb []res dann in dem Array gefüllt werden Sie sie durch js verwenden können: kann

var str = \\ obtain your text from the element(s) through JS 
var res = str.match(/\[(\w+)\]/g); 
+0

Nur als ein Wort der Vorsicht zu OP, kann dies verschachtelte Klammern nicht richtig behandeln. Es kann auch nicht "[word1 word2]" oder "[word.word]" übereinstimmen, aber die Frage ist unklar, ob dies Überlegungen sind oder nicht. – CollinD

4

Sie .text() verwenden, .match() mit RegExp/\[[a-z]+\]/ig[text], passen .map(), .replace() mit RegExp/\[|\]/ zu entfernen [, ] Zeichen

var [something, written] = $("p").text().match(/\[[a-z]+\]/ig) 
 
          .map((t) => t.replace(/\[|\]/g, "")); 
 

 
console.log(something, written); 
 

 
var span = `<span>there is ${something} ${written} here.</span>`; 
 

 
$("body").append(span);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p>[something][written]</p>

+0

Diese bearbeitete Version könnte mein Problem lösen und ist leichter zu verstehen als die vorherige. Vielen Dank! :) – user3605994

+0

kannst du mir bitte ein wenig weiterhelfen? das funktionierte gut auf jsfiddle, aber als ich es meiner Website hinzugefügt habe, bekomme ich diesen Fehler und ich weiß nicht, was zu tun ist. 'Uncaught TypeError: $ (...). text (...). hide is keine Funktion ' – user3605994

+0

Ist jQuery definiert? Versuchen Sie 'function() {}' für Pfeilfunktionen zu ersetzen, verketten Sie Variablen für Vorlage literal – guest271314

Verwandte Themen