driver458
@driver458

Как задать регулярное выражение с зависимостью от первого аргумента?

В моём примере нужно задать
"Размер экрана": 4.5 - 5"

Т.е. нужно пропускать следующие значения
  • 4.5
  • 4.6
  • 4.7
  • 4.8
  • 4.9
  • 5.0

Я новичок в регулярных выражениях и пока что у меня не получилось
^(4\.[5-9])|(5\.0)
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
Гораздо быстрее и «правильнее» проверять значение не регуляркой, а в коде, на чём вы там пишете всю логику.

Но раз уж хочется непременно регуляркой, здесь подойдёт вариант или-или. Начинается на цифру 4, потом точка и одна цифра от 5 до 9. Или буквально "5.0":

/(4\.[5-9])|(5\.0)/

Можно уточнить, что это должна быть строка целиком, от начала до конца, никаких там в начале знаков, лишних цифр:

/^((4\.[5-9])|(5\.0))$/

Проверка на JS
var re = new RegExp('^((4\.[5-9])|(5\.0))$');
var testTrue = '4.5,4.6,4.7,4.8,4.9,5.0'.split(',');
var testFalse = '4.4,1.1,-4.5,5.1,5.2,5.5,5.6,105.0,104.6'.split(',');
var i;
for(i in testTrue) if( re.test( testTrue[i]) !== true) throw('Failed at ' + testTrue[i]);
for(i in testFalse) if( re.test( testFalse[i]) !== false) throw('Failed at ' + testFalse[i]);

"All tests passed";
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@romteh
https://regex101.com/r/aywjmo/1
Вот такая регулярка не подойдет?
(\d+(?:\.\d+)?).*?(\d+(?:\.\d+)?)
Ответ написан
KorniloFF
@KorniloFF
Работаю по font-end / JS
Как задать регулярное выражение с зависимостью от первого аргумента?


/(\d)\1\1/ - перехватит 000...999
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы