Javascript Условное регулярное выражение с обработкой - PullRequest
2 голосов
/ 30 августа 2010

При преобразовании старого кода я столкнулся со следующей проблемой.

Учитывая строку HTML,

   <Font face="Arial" size="21" color="#000000"> 
     THIS IS SIZE 21    
    </Font>

Я хочу вычесть фактор "X" из размера "21" в выходной строке, используя Regex?

Итак, новая строка будет

   <Font face="Arial" size="(21-X)" color="#000000"> 
     THIS IS SIZE (21-X)    
    </Font>

Пример

Исходная строка

   <Font face="Arial" size="21" color="#000000"> 
     THIS IS SIZE 21    
    </Font>

и коэффициент = 8 (поэтому вычтите 8 из размера .. так что новый размер = 21-8 = 13)

Выходная строка

   <Font face="Arial" size="13" color="#000000"> 
     THIS IS SIZE 13   
    </Font>

Может ли этот тип обработки выполняться с использованием регулярных выражений. Нечто похожее на оценщик совпадений в C #

Каков наилучший способ сделать этот тип конверсий ??

Ответы [ 3 ]

2 голосов
/ 30 августа 2010

Попробуйте это:

function update(elem, num) {
    var size = elem.getAttribute("size");
    if (size) {
        elem.setAttribute("size", (size - num) );
        elem.firstChild.nodeValue =
            elem.firstChild.nodeValue.replace(/(\d+)/, function(str, p1) {
               return p1 - num;
            });
    }
}
var fonts = document.getElementsByTagName('font');

update(fonts[0],8);
1 голос
/ 30 августа 2010

Попробуйте что-то вроде следующего:

var html = '<Font face="Arial" size="21" color="#000000">\n' +
           '  THIS IS SIZE 21 \n' +
           '</Font>';
var factor = 8;
html = html.replace(/(size=")(\d+)(")/g, function(m, c1, c2, c3) { 
    return c1+(c2-factor)+c3; 
});

Функция вызывается с первым аргументом, представляющим полное совпадение, за которым следуют захваты.Его возвращаемое значение используется для замены совпадения в результате.

1 голос
/ 30 августа 2010

Прежде чем идти дальше, тег шрифта в наши дни был заменен на CSS (и в какой-то момент будет устаревшим), поэтому я бы вместо этого использовал CSS.Кроме того, эта страница объекта Javascript RegExp должна помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...