Регулярное выражение для соответствия введенному числу находится в диапазоне от -50 до 100000000

Я пытаюсь написать регулярное выражение, которое может соответствовать вводу числовой строки, которая должна быть в диапазоне -50 to 100000000

Я пробовал выражение вроде

^(-?)(1000|[0-9][0-9][0-9]?)$

но он соответствует только числам от -1000 до 1000.

пример для проверки прост

-50
-39
9
1000
36900
2000022

Пожалуйста, помогите мне получить такое выражение, которое может соответствовать диапазону от -50 до 100M.

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

Заранее спасибо.

Вы используете pcre или javascript?

Poul Bak 12.12.2020 12:47

Это... не то, для чего нужны регулярные выражения... "Я знаю, что мы можем написать простое условие if, но мне нужны только регулярные выражения". - ПОЧЕМУ?!

Milney 12.12.2020 12:47

Связанный: stackoverflow.com/questions/676467/…

str 12.12.2020 12:50

Знак минус должен применяться только к части от -50 до -1, а не ко всему выражению. ^(?:-0*(?:[1-9]|[1-4][0-9]|50)|(?:0*[0-9]{1,8}|100000000))$

The fourth bird 12.12.2020 12:57
Поведение ключевого слова "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) для оценки ваших знаний,...
1
4
285
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

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

/^(-50|-[1-4]?\d|100000000|[1-9]?\d{1,7})$/gm

Объяснение:

^ соответствует началу строки

-50 матч -50

ИЛИ

- только отрицательные числа

[1-4]? совпадение от 1 до 4 - необязательно, затем: любое число

ИЛИ

100000000 соответствует 100000000

ИЛИ

[1-9]? сопоставьте от 1 до 9 - необязательно, а затем:

\d{1,7} угадайте любое число от 1 до 7 раз

$ соответствует концу строки

Используйте варианты global и multiline.

было бы здорово, если бы вы добавили решение, если пользователь добавит дробное значение 33,44 до 2 знаков после запятой.

Nikse 12.12.2020 15:59

Это не то, чего хочет ОП, так что нет.

Poul Bak 13.12.2020 00:39

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

Nikse 13.12.2020 14:15

Хорошо, попробуйте это: ^(-50|-[1-4]?\d(\.\d\d?)?|100000000|[1-9]?\d{1,7}(\.\d\d?)?)‌​$ - это позволит использовать один или два десятичных знака.

Poul Bak 14.12.2020 05:03

^(-50|-[1-4]?\d(\.\d\d?)?|100000000|[1-9]?\d{1,7}(\.\d\d?)? )‌​$ это выражение работает нормально, но граничная точка не принимает 50,00 или 100000000,00, не могли бы вы предложить.

Nikse 10.01.2021 08:06

@Nikse: добавьте (\.00?)? после -50 и после 100000000

Poul Bak 10.01.2021 11:32

Спасибо, это работает, как и ожидалось.

Nikse 10.01.2021 14:10

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

^(-0*(50|[0-4]?[0-9])|\+?0*([0-9]{1,8}|100000000))$

Прецедент

Использование с JavaScript:

let number = -50; /* <-- test number or string here */
let withinTheRange = Boolean(/^(-0*(50|[0-4]?[0-9])|\+?0*([0-9]{1,8}|100000000))$/.exec(number));

Это полное решение. Отличная работа!

Felipe Endlich 12.12.2020 13:35

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