Регулярное выражение для 1-10 в javascript для проверки

#javascript #regex

#javascript #регулярное выражение

Вопрос:

Каким было бы регулярное выражение для чисел в диапазоне 1-10 и 1-5? Пожалуйста, помогите этой обеспокоенной душе.

Комментарии:

1. Почему вы хотите сделать это с регулярным выражением в первую очередь?

2. Зачем использовать регулярное выражение для тестирования числового диапазона?

3. Мне нужно проверить ввод от пользователя для моего текстового поля. Допустимые значения перед отправкой формы — 1-10 для 1 поля и 1-5 для другого. Что-то вроде var validrange= /^[0-9] /; или что-то еще, но мне нужен правильный формат!!

4. @ValianthX Так что используйте parseInt() и проверяйте 1 ≤ n ≤ 10

5. Регулярные выражения не являются подходящим инструментом для этого. Используйте обычное сравнение чисел.

Ответ №1:

Вы могли бы достичь этого с помощью простых проверок чисел в javascript:

 // Convert input to integer just to be sure
mynum = parseInt(mynum, 10);

// Check number-range
if(mynum >= 1 amp;amp; mynum <=10)
and
if(mynum >= 1 amp;amp; mynum <=5)
  

Если вы действительно хотите использовать регулярное выражение:

 /^([1-9]|10)$/
and
/^[1-5]$/
  

Обновить:

  • Исправлено, что первое регулярное выражение правильно соответствовало ограничениям строки
  • Добавлен parseInt к первому примеру, чтобы обеспечить правильную проверку чисел

Комментарии:

1. также первое регулярное выражение соответствует 0. 🙂

2. parseInt() в качестве основного аргумента следует указать (заглавную I). parseInt( mynum, 10 )

3. Регулярное выражение по-прежнему неточно. ^ Применяется только к первой альтернативе, и $ только к 10 . Так что 5555 будет соответствовать, как и xxxxx10 .

4. Ты хочешь свести меня с ума, не так ли? 🙂 Спасибо за ввод

Ответ №2:

Это не очень хорошее использование регулярных выражений.

Используйте простые условия:

 if (x > 0 amp;amp; x < 6) {
  // x is 1 - 5
}

if (x > 0 amp;amp; x < 10) {
  // x is 1 - 10
}
  

Ответ №3:

Для 1-5 вам нужно только заключить его в качестве символьного класса:

   /^[1-5]$/
  

Для 1-10 вам просто понадобится дополнительная альтернатива:

   /^([1-9]|10)$/
  

Комментарии:

1. Что, если входные данные задаются как «03» или «3.0»?

2. @patrick: Предполагается, что оба теста не пройдут этот тест. Если требуется сравнение целых чисел или чисел с плавающей запятой вместо проверки строкового формата, то регулярное выражение требует слишком больших усилий.

3. Учитывая, что оно предназначено для проверки (предположительно пользовательского ввода), я бы сказал, что этим возможностям следует уделить внимание, и я бы согласился, что «регулярное выражение требует слишком больших усилий» .

4. @patrick: Я бы сказал, что это слишком много усилий, если действительно выполняется как проверка Javascript. Однако, если это должно было использоваться как <input pattern= регулярное выражение, это вполне могло бы сэкономить некоторое количество ввода. (Но так было бы type = number с min= max =)

Ответ №4:

Есть ли причина, по которой вы хотите использовать регулярные выражения?

 /([1-9]|10)/
  

Ответ №5:

Используйте числовое сравнение. Следующее расширение числа может проверять, попадает ли число между двумя значениями:

 Number.prototype.between = 
  function(lower,upper, includeBoundaries){
    lower = Number(lower);
    upper = Number(upper);
    noCando = isNaN(lower) || 
              isNaN(upper) || 
              lower>=upper;
    if ( noCando ) {
      throw 'wrong arguments or out of range';
    }
    return includeBoundaries
           ? this >= lower amp;amp; this <= upper
           : this > lower amp;amp; this < upper
};
// usage:
(12).between(1,12); /=> false
(12).between(1,12,true); /=> true
(12).between(0,15,true); /=> true
(0).between(-5,1); //=> true
  

Функция преобразует параметры в число, потому что 0 может принимать логическое значение в javascript, чтобы иметь возможность проверить, являются ли параметры действительными числовыми значениями, и иметь возможность проверить, не больше ли lower / равно upper. В таких случаях выдается ошибка.

includeBoundaries Параметр также проверяет, равно ли число меньшему или большему значению, если оно не указано, функция возвращает реальную проверку «между».

Ответ №6:

Для 1-10 это может быть

 /^([1-9]|10)$/
  

а для 1-5 просто

 /^[1-5]$/
  

Ответ №7:

Ответ был бы

 /^([1-9]|10)$/