Что такое регулярное выражение для диапазона положительных чисел 18-65? Он должен принимать только две цифры

Мне нужно регулярное выражение для диапазона от 18 до 65.

Я использовал это -> 1[89]|[2-5][0-9]|6[0-5], но оно не работает должным образом, а также принимает более двух цифр. Пожалуйста, предложите.

Я хотел ввести возраст от 18 до 65 лет.

регулярное выражение является излишним для этого. num >= 18 && num <=65 достаточно

AZ_ 24.07.2019 09:09
regex является нет подходящим инструментом для этой работы. Его можно использовать для проверки того, выглядит ли строка как число (т. е. содержит только цифры), но на этом ее возможности заканчиваются. Затем проанализируйте строку, получите число и сравните число с ограничениями.
axiac 24.07.2019 09:12
Поведение ключевого слова "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) для оценки ваших знаний,...
4
2
417
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Вы могли бы попробовать

const regex = /^(1[8-9])|([2-5][0-9])|(6[0-5])$/

console.info(regex.test(17)) // false
console.info(regex.test(18)) // true
console.info(regex.test(65)) // true
console.info(regex.test(66)) // false

Но, как уже говорилось в комментариях, регулярное выражение для этого является излишним.

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

Это работает, но принимает более двух цифр.

Roshan Yadav 24.07.2019 09:14

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

^1[8-9]$|^[2-5][0-9]$|^6[0-5]$

Также проходит на 11-17

CinCout 24.07.2019 09:13

Проваливается на 20, 30, 40, 50

CinCout 24.07.2019 09:14

@CinCout, спасибо, что сообщили мне, изменил это сейчас.

RavinderSingh13 24.07.2019 09:15

Это соответствует 1800000

Toto 24.07.2019 11:00
Ответ принят как подходящий

Вы довольно близки, проблема с вашим выражением заключается в том, что вам не хватает тегов привязки, которые говорят, что механизм регулярных выражений должен соответствовать только заданной строке (и сделать его неудачным, если что-то еще будет до или после).

Немного изменив выражение лица на это: ^(1[89]|[2-5][0-9]|6[0-5])$ (пример здесь). ^ впереди гарантирует, что сопоставление начнется в самом начале строки, а $ в конце гарантирует, что сопоставление остановится в конце строки. Это гарантирует, что предоставленная строка соответствует нужному шаблону, в целом, поэтому 19 будет соответствовать, а 119 — нет.

В качестве альтернативы (как это, скорее всего, будет предложено) будет проще разбить на -, а затем использовать обычные математические операторы.

@RoshanYadav: Если ответ помог вам, отметьте его для других.

npinti 24.07.2019 09:17

Если вы действительно хотите сделать это с помощью регулярных выражений, вам нужно использовать ^ и $. Таким образом, число (от 18 до 65) будет единственным допустимым вводом (никаких других символов):

^(1[89]|[2-5][0-9]|6[0-5])$

Много ответов... Может быть, загляните на этот удобный веб-сайт, если в будущем вам понадобятся другие диапазоны? http://gamon.webfactional.com/regexnumericrangegenerator/

\b(1[89]|[2-5][0-9]|6[0-5])\b

Это соответствует abc*$^189245%/:

Toto 24.07.2019 11:01

Отредактированный пример для соответствия всему слову.

Captain_Planet 24.07.2019 11:05

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

(^1[8-9]$)|(^[2-5][0-9]$)|(^6[0-5]$)

Вот демо

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