Как регулярно сравнивать и заменять на katex

обновленный

function test() {
  var text = "3 sqrt(11) %i - 1 1 + 3 sqrt(11) %i 50 50 3 sqrt(11) %i - 1 1 + 3 sqrt(11) %i [x = - -----------------, x = -----------------] 50 50 3 sqrt(11) %i - 1 1 + 3 sqrt(11) %i 50 50i";
  var alter = text.replace("()","{}").replace(/(\d+)?([sqrt])/g,"\\");//i need a answer 3\\sqrt{11}
  alert(alter);
  katex.render(alter, document.getElementById('demo'));
  }

test();
<script src="https://khan.github.io/KaTeX/bower_components/katex/dist/katex.min.js"></script>
<link href="https://khan.github.io/KaTeX/bower_components/katex/dist/katex.min.css" rel="stylesheet"/>
<p id="demo"></p>

У меня есть строка 3sqrt(11) в сопоставлении и замене с использованием регулярных выражений. Потому что я получил вывод через Katex Formet. Я пробовал с нижеприведенным сценарием:

function test() {
  var text = "3sqrt(11)";
  var alter = text.replace("()","{}").replace(/(\d+)?([sqrt])/g,"\\");//i need a answer 3\\sqrt{11}
  alert(alter);
  katex.render(alter, document.getElementById('demo'));
  }

test();
<script src="https://khan.github.io/KaTeX/bower_components/katex/dist/katex.min.js"></script>
<link href="https://khan.github.io/KaTeX/bower_components/katex/dist/katex.min.css" rel="stylesheet"/>
<p id="demo"></p>

1 ответ

Решение

Вы можете сделать это в одном .replace вызов с использованием захваченных групп:

function test() {
  var text = "3 sqrt(11) %i - 1 1 + 3 sqrt(11) %i 50 50 3 sqrt(11) %i - 1 1 + 3 sqrt(11) %i [x = - -----------------, x = -----------------] 50 50 3 sqrt(11) %i - 1 1 + 3 sqrt(11) %i 50 50i";
  
  var alter  = text.replace(/(\d+)\s*(sqrt)\((\d+)\)/g, "$1\\\\$2{$3}")

  console.log(alter);
}

test();

Здесь в 1-й группе мы подбираем и собираем sqrt, Во 2-й группе мы подходим ( сопровождаемый некоторым числом, сопровождаемым ),

Затем в замену добавляем \\ до 1-й группы обратных ссылок, т.е. $1 и завернуть $2 вокруг { а также },

Другие вопросы по тегам