Ошибка проверки шаблона RegEx при вводе html

Проблема: Я пытаюсь добиться следующих результатов для тестовых случаев, используя шаблон Regex для текста типа ввода html.

Стремление соответствовать следующим критериям:

  1. Только числовые — не допускаются буквы или специальные символы.

  2. Без пробелов между цифрами

  3. две цифры после запятой разрешены

  4. Не может быть нулем (0)

  5. 1-я цифра ограничения не может быть равна нулю (например: 01200)

    testPattern: RegExp = /(?=.*?\d)^\$?(([1-9]\d{0,2}(,\d{3})*)|\d+)?(\.\d{1,2})?$/;

Ожидаемые результаты:

  • 0 // ложь
  • 012 // ложь
  • 0,00//ложь
  • 0.0//ложь
    1. //ЛОЖЬ
  • 00122 //ложь
  • 0,12 // правда
  • 0,01 //правда
  • 1 234,00 // правда
  • 1,00 //правда
  • 123 456 //правда
  • 1,23 // правда

ТИА

Вы можете использовать regexr.com для изолирования регулярных выражений для тестирования.

RiverTam 10.05.2022 19:20
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
38
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

Объяснение

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

Демонстрация регулярных выражений

const regex = /^(?![0,.]*$|0\d*$)\d{1,3}(?:,\d{3})*(?:\.\d{1,2})?$/;
[
  "0",
  "012",
  "0.00",
  "0.0",
  "0.",
  "00122",
  "0.12",
  "0.01",
  "1,234.00",
  "1.00",
  "123,456",
  "1.23"
].forEach(s => console.info(`${s} --> ${regex.test(s)}`));

Другие вопросы по теме