Шаблон регулярного выражения для локализации - PullRequest
1 голос
/ 04 июня 2019

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

Обычные разделители: ".""," или "_", которые я сохранил в массив разделителей.

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

Например 3000 или 3,0 3,0 3,00

Ответы [ 3 ]

0 голосов
/ 04 июня 2019

Скорее всего, мы могли бы начать с выражения, похожего на:

\d+[.,](\d+)?[0]

, и добавить дополнительные границы к нему, если нам так нравится.

Например, если мы хотим захватить разделители, мы добавим группу захвата:

\d+([.,])(\d+)?[0]

Демо

Или если мыЕсли вы хотите удалить разделители, мы бы расширили его до:

(\d+)([.,])(\d+)?([0])

и заменили его на:

$1$3$4

Демо

Тест

const regex = /(\d+)([.,])(\d+)?([0])/gm;
const str = `3,000
3,0
3.0
3.00`;
const subst = `$1$3$4`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log(result);
0 голосов
/ 05 июня 2019

Вы можете добавить разделители в класс символов [_.,] и использовать границы слов \b, чтобы число не входило в большее слово.

Если это единственное значение, вы также можете использовать якоря для подтверждения начала ^ и конца $ строки.

\b\d+[_.,]\d*0\b

Это будет соответствовать:

  • \b Граница слова
  • \d+ Совпадение 1+ цифр
  • [_.,] Соответствует любому из перечисленных в классе персонажей
  • \d*0 Совпадение 0+ цифр с последующим нулем
  • \b Граница слова

Regex demo

0 голосов
/ 04 июня 2019

Вы можете попробовать позитивный взгляд

Если на самом деле ваши данные всегда имеют один или более 0 после любого разделителя, использование положительного прогноза ((?=0+) в данном случае) может быть тем, что вы ищете .. .

Точнее, для чисел, которые вы дали:

s/([_.,](?=0+))/g 

должен добиться цели!

Вы можете попробовать и поэкспериментировать с регулярным выражением здесь !

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