Форум программистов, компьютерный форум, киберфорум
JavaScript: RegExp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/47: Рейтинг темы: голосов - 47, средняя оценка - 4.66
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 5

Регулярное выражение для проверки возраста

11.02.2014, 15:26. Показов 9688. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, друзья. Помогите с регулярным выражением. Нужно проверить возраст человека: целое число от 6 до 100 лет. Заранее благодарю!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.02.2014, 15:26
Ответы с готовыми решениями:

Регулярное выражение для проверки поля
Привет. Нужно регулярное выражение для проверки поля ФИО. Проверка нестрогая, т е могут быть числа. Могут быть также и двойные, и...

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

Регулярное выражения для проверки email
Привет, подскажите хочу протестировать регулярные выражения в email, создал переменную, внес ее, но не хочет работать, может кто в курсе? ...

12
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
11.02.2014, 15:56
Обязательно целиком огромной сложной регуляркой, которая будет пропускать только целое число от 6 до 100, или можно более естественным путем?
JavaScript
1
2
3
4
5
6
7
8
9
var input = prompt('Возраст', '42');
if (null !== input) {
    if (/^\d{1,3}$/.test(input) && +input >= 6 && +input <= 100) {
        // порядок
    }
    else {
        alert('fail');
    };
};
0
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 5
11.02.2014, 17:01  [ТС]
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Обязательно целиком огромной сложной регуляркой, которая будет пропускать только целое число от 6 до 100, или можно более естественным путем?
JavaScript
1
2
3
4
5
6
7
8
9
var input = prompt('Возраст', '42');
if (null !== input) {
    if (/^\d{1,3}$/.test(input) && +input >= 6 && +input <= 100) {
        // порядок
    }
    else {
        alert('fail');
    };
};
Большое спасибо за ответ. Очень элегантный код, но в том-то и дело, что нужно регулярное выражение*))))
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
11.02.2014, 17:22
JavaScript
1
/^(?:1(?:00?|\d)|[2-5]\d|[6-9]\d?)$/
0
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 5
11.02.2014, 17:30  [ТС]
Цитата Сообщение от Vovan-VE Посмотреть сообщение
JavaScript
1
/^(?:1(?:00?|\d)|[2-5]\d|[6-9]\d?)$/
не получается
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
11.02.2014, 17:40
Лучший ответ Сообщение было отмечено Юкки как решение

Решение

Цитата Сообщение от Юкки Посмотреть сообщение
не получается
Что именно не получается? Регулярку проверял — должна работать.
JavaScript
1
2
3
4
5
6
7
8
9
var input = prompt('Возраст', '42');
if (null !== input) {
    if (/^(?:1(?:00?|\d)|[2-5]\d|[6-9]\d?)$/.test(input)) {
        // порядок
    }
    else {
        alert('fail');
    };
};
1
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 5
11.02.2014, 17:43  [ТС]
Цитата Сообщение от Vovan-VE Посмотреть сообщение
JavaScript
1
/^(?:1(?:00?|\d)|[2-5]\d|[6-9]\d?)$/
Ой, прошу прощения за невнимательность! Все работает! Спасибо!!!!

Добавлено через 1 минуту
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Что именно не получается? Регулярку проверял — должна работать.
JavaScript
1
2
3
4
5
6
7
8
9
var input = prompt('Возраст', '42');
if (null !== input) {
    if (/^(?:1(?:00?|\d)|[2-5]\d|[6-9]\d?)$/.test(input)) {
        // порядок
    }
    else {
        alert('fail');
    };
};
я не в то поле вставила по ошибке, а проверяла это поле. спасибо еще раз!
0
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
08.03.2014, 21:51
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Код JavaScript1
/^(?:1(?:00?|\d)|[2-5]\d|[6-9]\d?)$/
а так не быстрее?
JavaScript
1
/^(?:100|[1-9]\d|[6-9])$/
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
09.03.2014, 07:31
Цитата Сообщение от ikki Посмотреть сообщение
а так не быстрее?
В сабжевой задаче проверка выполняется единстенный раз. Тут мы разница не заметим даже если специально и очень серьезно всё запутаем и усложним.

Если бы проверка была, скажем, в цикле из 1млн итераций (лог фильтруем, например), тогда мы бы уже могли ощущать разницу.

Лично я из параниодальных соображений привык строить регулярки таким образом, чтобы параллельные ветви полностью исключали друг друга. Уж если какая-то ветвь нас стала удовлетворять с самого своего начала, то все соседние ни коим образом не должны нас удовлетворять даже частично. В данной задаче в моей регулярке мы ветвимся по первой цифре (а если она есть «1», то и по второй).

Ведь если какая-то ветвь нас удовлетворяла с начала, но потом «что-то пошло не так», нам придется возвращаться и пробовать следующие ветки. Чем сложнее регулярка, чем больше ветвей и чем они глубже, чем хуже складываются обстоятельства с точки зрения аналигируемого текста, тем более ощутимее будет разница в производительности: возможно даже на порядки.
1
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
09.03.2014, 21:24
Цитата Сообщение от Vovan-VE Посмотреть сообщение
/^(?:1(?:00?|\d)|[2-5]\d|[6-9]\d?)$/
Откоментарить бы всё это великолепие, плиззз. Кто тут от кого произошёл.
Цитата Сообщение от ikki Посмотреть сообщение
/^(?:100|[1-9]\d|[6-9])$/
И чем это хуже? впрочем это может стать понятным из первого ответа, наверно.
0
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
09.03.2014, 23:38
первая регулярка выглядит чуть сложнее для понимания, но, после комментария Vovan-VE и, поразмыслив, я прихожу к однозначному выводу, что она действительно быстрее.
как уже сказал Vovan-VE, в данной задаче (проверка одного числа) это несущественно, но меня интересовала именно скорость обработки регулярки.

к слову - регулярки, тем более такие, здесь вообще как собаке пятая нога.
впрочем, об этом тоже уже сказано в сообщении #2.
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
10.03.2014, 00:04
JavaScript
1
/^(?:1(?:00?|\d)|[2-5]\d|[6-9]\d?)$/
Тут все просто, если разбить строку на части. Якоря не буду брать, и так понятно, что они значат
Code
1
2
3
4
5
(?:1 #единица
  (?:00?|\d)| #в добавок к единице "ноль и, возможно, еще один ноль", либо же любая цифра
  [2-5]\d| #цифра от 2 до 5 и еще одна любая цифра
  [6-9]\d? #цифра от 6 до 9 и, возможно, еще одна цифра
)
Т.е., получится, построчно:
2 строка - либо 10-19, либо 100.
3 строка - 20-59
4 строка - 6-9 либо 60-99.
Несколько мешают восприятию ?: на первый взгляд - но это лишь для исключения ненужного запоминания группировки, если без них, то будет уже выглядеть несколько проще.
JavaScript
1
/^(1(00?|\d)|[2-5]\d|[6-9]\d?)$/
А также, возможно, будет чуть понятнее такая запись
JavaScript
1
/^(?:1(?:0{1,2}|\d)|[2-5]\d|[6-9]\d?)$/
2
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
10.03.2014, 22:02
Спасибо принцип понял.
Известно что проверки идут слева направо, а значит нужно поменять местами первую и вторую ИЛИ, так как 20-59 перекрывает больший диапазон и наиболее "ходовой" возраст, чем 10-19.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.03.2014, 22:02
Помогаю со студенческими работами здесь

Регулярное выражение для ника
Подскажите как должно выглядеть регулярное выражение, если условие такое: слово должно быть 4-12 символов, буквы кириллица и латиница,...

Регулярное выражение для логина
Задача проверять валидность логина, по условиям логи: строка из латинских букв, цифр, знака подчеркивания. Первыми 4-а сиволами - латинские...

Регулярное выражение для тега input предназначенного для введения телефона.
Помогите написать регулярное выражение для тега input предназначенного для введения телефона. Ни чего усложнять не нужно. Необходимо...

Нужно сделать регулярное выражение для
Срочно... Нужно сделать регулярное выражение, пример: &lt;input type=&quot;text&quot; class=&quot;form-control&quot; id=&quot;exampleInputAmount&quot;...

Регулярное выражение для кредитных карт
Люди добрые, подскажите хорошую регулярку для маски инпута кредитной карты.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru