2016-05-12 3 views
0

У меня есть текстовое уравнение: 10x^2-8y^2-7k^4=0. Как найти ^ и заменить его на <sup>2</sup> во всей строке с помощью регулярного выражения. Результат должен быть, как:Найти слово и заменить тегом html с помощью regex

enter image description here

Я попытался str = str.replace(/\^\s/g, "<sup>$1</sup> "), но я не получаю ожидаемый результат.

Любые идеи, которые могут помочь решить мою проблему?

+0

Попробуйте '.replace (/ \^(\ d +)/g, '$ 1')'. Вам нужно также управлять пробелами вокруг этих значений определенным образом? –

+0

Нет его достаточно .. я получил его ответ спасибо за вашу помощь. – prasanth

+0

Если я могу применить функцию двойного тега в одном и том же регулярном выражении, например: ''^"заменить $ 1' и '" ⌄ "заменить на 1 $ '. Что делать? скажите, как я могу изменить код? – prasanth

ответ

2

Я думаю, что вы ищете что-то вроде

\^(\d+) 

Это соответствует ^, фиксирует показатель и заменить

<sup>$1</sup> 

See it here at regex101.

Edit:

Для удовлетворения новых требований , проверьте this fiddle. Он обрабатывает sub, а также заменяет его функцией.

+0

Спасибо за правильный ответ. – prasanth

+0

Добро пожаловать. Пожалуйста, отметьте это как принято. – ClasG

+0

Спасибо большое. Чистый и простой код. И также выполнил мое ожидание. – prasanth

1

Ваш текущий шаблон соответствует карете, за которым следует символ пробела (пробел, табуляция, новая строка и т. Д.), Но вы хотите совместить каретку, за которой следует один символ или несколько символов, завернутых в награды, в качестве строки находится в TeX.

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

Теперь, используя str = str.replace(/\^(?:([\w\d])|\{([\w\d]{2,})\})/g, "<sup>$1</sup>");, следует выполнить эту работу.


Вы можете сделать более общую функцию из этого выражения, которые могут обернуть символы префиксом определенного символа с определенным тегом.

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

Например, вызов wrapPrefixed("1_2 + 4_{3+2}", "_", "sub"); результатов в 1<sub>2</sub> + 4<sub>3+2</sub>.

+0

Спасибо, Майкл. Если я могу применить функцию двойного тега в одном и том же регулярном выражении, например: - '"^"заменить $ 1' и '" ⌄ "заменить на 1 $ '. Что делать? скажите, как я могу изменить код? – prasanth

+0

Хм ...Что с фигурной фигурной скобкой? Как это необходимо? – ClasG

+0

no.its не обязательно. Вы можете мне помочь? – prasanth

Смежные вопросы