JQuery Regex, чтобы найти предложение соответствия в htmlstring

Я хочу найти соответствие для "Исходной стоимости в $0,5 млн." И заменить его тегом обтекания. Текст появится внутри любого тега, такого как td, шрифт и т. Д. Просто найдите его и оберните с помощью span?

Строка:

var str = '<td><font style="font: 8pt arial, helvetica, sans-serif">Original cost basis <b>$0.5</b> million</font></td>';

Ожидаемый результат:

'<td><font style="font: 8pt arial, helvetica, sans-serif"><span>Original cost basis <b>$0.5</b> million<span></font></td>'

4 ответа

Исходя из вашего комментария к моему предыдущему ответу, кажется, что проблема не в том, что я прочитал, и HTML не может гарантировать, что он будет в этой структуре.

Вместо этого я буду предполагать, что строка находится в листе (самая низкая часть) HTML-дерева. Попробуй это:

str.replace(/>([^<]+)</, '<span>$1<\span>');

var str = '<td><font style="font: 8pt arial, helvetica, sans-serif">Original cost basis $0.5 million</font></td>';
var replacetext= str.replace(/Original cost basis $0.5 million/g, "New text");

alert(replacetext);
document.write(replacetext);

Вы просили решение для регулярных выражений, но есть также replace() метод.

var str = '<td><font style="font: 8pt arial, helvetica, sans-serif">Original cost basis $0.5 million</font></td>';
var res = str.replace("Original cost basis $0.5 million", "My new replacement")

console.log(res);

replace() Метод работает так:

replace('string to find', 'string that is used to replace the found string');

W3 Документация здесь

Вы могли бы использовать .replace() метод:

var str = '<td><font style="font: 8pt arial, helvetica, sans-serif">Original cost basis $0.5 million</font></td>';
var res = str.replace(/(<td><font.*>)(.*)(<\/font><\/td>)/, '$1<span>$2</span>$3');

Приведенный выше фрагмент кода соответствует открытию td а также font теги, что находится внутри тегов шрифта, и помещает их в "группу", на которую ссылается $1, Затем он вставляет span тег. Затем он вставляет строку, которую вы пытаетесь обернуть spans, на которые ссылается $2, Затем он вставляет закрывающий /span тег. Наконец, он закрывает /font и теги '/td' в конце, на которые ссылается $3,

Перед матчем:

<td><font style="font: 8pt arial, helvetica, sans-serif">Original cost basis $0.5 million</font></td>

После матча и заменить:

<td><font style="font: 8pt arial, helvetica, sans-serif"><span>Original cost basis $0.5 million</span></font></td>

Ссылка на документацию Mozilla здесь:

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