Верхний индекс центов в динамической текстовой строке с использованием ванильного JavaScript - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь надписать центы в некоторых ценах;цены динамические, поэтому я не могу вручную добавить теги sup в HTML.

Насколько я знаю, цены должны быть отформатированы как "3,99 €", но я не хочу, чтобы что-нибудь сломалось, если в будущем они будут изменены на что-то вроде "3,99 €".

Я пытался использовать RegEx, как

  var matcher = /(\.|\,)\d{2}(?![\d])/;
  return price.replace(matcher, '<sup>' + matcher + '</sup>');

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

1 Ответ

0 голосов
/ 27 сентября 2018

Это должно сделать это: (\d[,.])(\d{2})(?!\d).Требуется дополнительная группа захвата, чтобы можно было сопоставлять больше символов, не заменяя их (обходной путь для позитивного взгляда сзади).

var regex = /(\d[,.])(\d{2})(?!\d)/g;
var str = 'Test test test 100,99€ test 2.116.600,99€ test € 2,50 test.';

console.log(str.replace(regex, '$1<sup>$2</sup>'));

Объяснение:

(\d[,.]) | Capture a digit followed by "," or "."
(\d{2})  | Capture the two cents digits
(?!\d)   | Ensure a digit doesn't follow the previous capture

Попробуйте здесь

...