Как заставить это регулярное выражение также принимать десятичные дроби - PullRequest
0 голосов
/ 30 января 2019

У меня есть выражение регулярного выражения, подобное этому

/^[0-9]*\s*kg\s*[0-9]*$/

Это принимает строки типа 100 kg или 100kg.Я пытаюсь сделать так, чтобы он также принимал 100.1kg или 100.1 kg или 10,20 kg и т. Д. (Должны быть приняты как точка, так и десятичная дробь).Как я могу изменить это текущее регулярное выражение так, чтобы те числа, которые я упомянул, также проверяли истинность?Я видел это регулярное выражение, которое поддерживает числа и десятичные дроби, но я не уверен, как объединить его с моим регулярным выражением.

^[0-9]{1,2}([,.][0-9]{1,2})?$

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Для включения десятичных значений, необязательно в дополнение к целым числам, вы можете просто поместить это регулярное выражение (?:[.,]\d+)? после ^[0-9]*, что позволит ему поддерживать десятичные значения, как вы упоминали в своем посте.Общее регулярное выражение становится следующим:

^\d*(?:[.,]\d+)?\s*kg\s*$

Демо

0 голосов
/ 30 января 2019

Чтобы сделать его необязательным, вы можете использовать необязательную группу без захвата (?: и добавить после нее подходящие пробелы в 0+ раз:

^[0-9]+(?:[,.][0-9]+)?\s*kg$

Regex demo

Теперь оно будет соответствовать

  • ^ Начало строки
  • [0-9]+ 1+ цифр
  • (?: Группа без захвата
    • [,.][0-9]+ совпадать с запятой или точкой и 1+ цифрами
  • )? Закрыть группу без захвата и сделать ее необязательной
  • \s*kg Совпадение 0+ раз aсимвол пробела
  • $ Конец строки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...