2016-08-10 5 views
1

Я не знаю, как спросить это правильно, но мне нужно, чтобы получить текст внутри [] тег и сделать его переменнойполучить текст внутри тега «[]» с помощью JavaScript

лисица отл. У меня есть:

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

Мне нужно получить слово что-то из [то] и сделать его вар и то же самое для [написано], так что я могу иметь что-то вроде этого:

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

использовать это нравится:

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

конечно, это не так, как я буду использовать его, но они отчасти похожи. Является ли это возможным? извините, я полностью новичок. заранее спасибо.

+0

'вар что-то = ???' –

+0

Может быть вложенными скобки? Если нет, вы можете использовать очень простое регулярное выражение. В противном случае вам нужно будет фактически выполнить токенизацию/разбор ввода самостоятельно. – CollinD

+0

hi Bhojendra Непал .. что я имею в виду, это что-то вроде var text1 = что-то (слово только wtout скобки) Я действительно не понял, что вы говорите @collinD извините .. – user3605994

ответ

2

EDIT: Вот решение, которое вы можете даже попробовать с консоли

<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> 

Гудлак!

EDIT: Здесь вы получаете каждое слово, находящееся в скобке, и назначаете их в var.

+0

Я исправил свой ответ, Извините за нижний уровень уха , Это написано только в javascript и может работать безупречно. Благодарю. –

2

Использование регулярных выражений \[(\w+)\], полученные слова в [] будут заполнены в массиве res, то вы можете использовать их с помощью JS:

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

Как слово предостережения к OP, это не может правильно обрабатывать вложенные скобки. Он также не может соответствовать '[word1 word2]' или '[word.word]', но вопрос неясен в отношении того, следует ли это делать или нет. – CollinD

4

Вы можете использовать .text(), .match() с RegExp/\[[a-z]+\]/ig соответствовать [text], .map(), .replace() с RegExp/\[|\]/ для удаления [, ] знаков

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

Эта отредактированная версия может решить мою проблему и легче понять, чем предыдущая. Благодаря! :) – user3605994

+0

не могли бы вы помочь мне немного дальше? это хорошо работало на jsfiddle, но когда я добавил его на свой сайт, я продолжаю получать эту ошибку, и я не знаю, что делать. 'Uncaught TypeError: $ (...). text (...). hide is а не функция ' – user3605994

+0

Определяется ли jQuery? Попробуйте подставить 'function() {}' для функций стрелок, объединяя переменные для шаблона literal – guest271314