Я сталкиваюсь с проблемой производительности при вызове метода, который заменяет текст innerHTML с помощью регулярного выражения:
function getReplacedText(textToReplace) {
return textToReplace.replace(/\<img src=[\"|\']([\S\s]+\\)*([\S\s]+).png[\"|\']\/\>/i,"*$2*");
}
Целью этой замены является получение innerHTML
из contentEditable div
в функции обработчика ключей и замените каждый тег img
именем файла.Эта замена необходима в моем случае, чтобы знать, превышает ли замещаемый текст максимальную длину, разрешенную для редактируемого div.
function keyupHandler(event) {
var myEditableDiv = document.getElementById("editableDiv");
const currentText = getReplacedText(myEditableDiv.innerHTML);
if (currentText.length >= 750) { //750 is the max length
event.preventDefault();
}
}
Например, требуемый вывод для abc <img src="assets\test\1F619.png"> def
будет abc *1F619* def
Когда я не использую getReplacedText
, у меня нет проблем с производительностью.Не могли бы вы посоветовать мне лучший подход или лучшее использование регулярного выражения?
Это пример текста, который нужно заменить, когда производительность начинает ухудшаться:
dsd<img src="assets\test\1F619.png"/><img src="assets\test\1F619.png"/><img src="assets\test\1F629.png"/><img src="assets\test\1F630.png"/>sdfsdfsdffsdf<img src="assets\test\1F629.png"/>sdfsdsdfsdf<img src="assets\test\1F627.png"/><img src="assets\test\1F631.png"/>sdfsdfsdf<img src="assets\test\1F631.png"/>sdfsdfsdf<img src="assets\test\1F632.png"/>sdfsdfs<img src="assets\test\1F629.png"/><img src="assets\test\1F629.png"/>sdfs<img src="assets\test\1F631.png"/>df<img src="assets\test\1F632.png"/>sdfsdfsdf