Javascript регулярное выражение валюты - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь создать регулярное выражение, удовлетворяющее следующим условиям:

  1. 0,01 - true
  2. 01.01 - false
  3. 122343.10 - true
  4. 123,432.10 - false
  5. 123 - false
  6. 123423.1 - false

Я сделал следующее, но он не работает должным образом

^[0\.|1-9\d*\.]\d{2,2}$/

Использование https://regexr.com/ для проверки

Ответы [ 2 ]

5 голосов
/ 05 февраля 2020

Я бы использовал это регулярное выражение:

^(?!0\d)\d+\.\d{2}$

При этом вначале используется отрицательный прогноз для обработки требования о том, что значение валюты не может начинаться с нуля, если сразу же после этого следует другой di git. .

Демонстрация

Вот еще один способ сделать это:

^(?:0|[1-9]\d*)\.\d{2}$

Это говорит, чтобы соответствовать нулю, за ним не следует ничего после десятичной запятой или 1-9, если то, что следует, также является другим числом перед десятичной запятой.

1 голос
/ 05 февраля 2020

Тим Бигелейзен избил меня на несколько минут, но вот другое (менее изощренное) решение:

(^[0]|^[1-9]+)\.\d{2}$

https://regex101.com/r/QJ3YyQ/2

Редактировать: Я только что понял, что пропустил крайний случай. Если цифры перед десятичной точкой содержат ноль, он не будет совпадать. Вот обновленное регулярное выражение:

(^[0]|^[1-9]\d*)\.\d{2}$

https://regex101.com/r/QJ3YyQ/4

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