Шаблон регулярных выражений Javascript для двух десятичных знаков - PullRequest
2 голосов
/ 16 марта 2019
pattern = new RegExp('([0-9]+([.][0-9]{1,2})?|[.][0-9]{1,2})');

это должно принять 00,00, 0.0, 00,25, 00,36, 00,56 ,, 222,25, 222,25, 2222,25

не следует принимать 000,25, 0000,25

Ответы [ 4 ]

1 голос
/ 16 марта 2019

Если ваше значение не может начинаться с нуля, вы можете использовать чередование :

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

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

  • ^ Начало строки
  • (?: Группа без захвата
    • (?: Группа без захвата
      • `0 {1,2} | [1-9] \ d * Совпадение с нулем 1-2 раза ИЛИ цифра 1-9 и 0+ раза цифра
    • )? Закрыть группу захвата и сделать ее необязательной
    • \.\d{1,2} Соответствует точке и 1-2 цифрам
    • | или
    • [1-9]\d* Совпадение с цифрой 1-9, затем 0+ раз цифрой
  • ) Закрыть группу без захвата
  • $ Конец строки

Regex101 demo

Если вы хотите разрешить начальный ноль, вы можете добавить соответствующие 0+ раз ноль 0* перед вторым чередованием:

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

Regex101 demo

1 голос
/ 16 марта 2019

Вы можете использовать это

^(?:(?!0{3,}).*)\.\d+$
  • ^ - начало строки.
  • (?:(?!0{3,}).*) -условие, чтобы избежать более чем 2 нулей при запуске.
  • \.\d+ - Совпадения ., за которыми следует одна или несколько цифр.
  • $ - конец строки

Демо

0 голосов
/ 16 марта 2019

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

(?<![0-9.])((?:[0-9]{1,2}|[1-9][0-9]*)(?:[.][0-9]{1,2})?)(?![0-9.])

Обратите внимание на якоря (?<!) и (?!). Вы можете опустить якоря, если хотите, но якоря позволят вашему шаблону совпадать, даже если строка содержит шум, отличный от числа. (?<!X) настаивает на том, чтобы X не предшествовало совпадению. (?!X) настаивает, чтобы X не следил за матчем.

[Если вы хотите настаивать на том, что X действительно предшествовал и / или следовал, то вместо этого вы бы привязались к (?<=X) и / или (?=X).]

Исходя из характера ваших примеров, мое решение предполагает, что они приемлемы: 01.23; 00,23; 1,23. Предполагается, что это не приемлемо: 011.23; 1,234.

0 голосов
/ 16 марта 2019

Используйте это:

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

Объяснение

Перед точкой \.. Допускается одно из двух (|):

  • ^[0-9] код начинается с любого числа от 0 до 9
  • [1-9]+ тогда число от 1 до 9 столько раз, сколько вы хотите

или

  • ^0{0,2} код начинается не более чем с двумя нулями
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...