Как проверить для значений «0» или «00» или «000» для текстового поля, которое имеет регулярное выражение и некоторые принятые значения - PullRequest
1 голос
/ 03 января 2011
var myregex = /^[0-9][0-9]{0,3}$|^[0-9][0-9]{0,3}[\.][0-9]$/;
if(!myregex.test($('#txt1').val()) || $('#txt1').val()=="0"){
    alert("Please Enter Correct value");
}

Теперь мои обязательные вещи:

  1. следуйте регулярному выражению
  2. мы не можем ввести значение "0" или "00" или "000"

Таким образом, мой выше if () вызывает предупреждение, если пользователь вводит «0», и если мы вводим «00», «000» или «0000», он не перехватывает его. Но если мы введем »00000 "это ловит это из-за регулярного выражения.Как я могу обработать 2,3,4 нуля. Теперь здесь я могу поместить регулярное выражение, которое не принимает нули, такие как этот "/^[^0].*$/", но мое текстовое поле должно принимать эти значения как правильные (0.2,0.3,0.4) .soя не могу использовать это регулярное выражение.

Ответы [ 5 ]

7 голосов
/ 03 января 2011

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

var val = parseFloat($('#txt1').val());
if (isNaN(val) || (val === 0))
{
    alert("Please Enter Correct value");
}
2 голосов
/ 04 января 2011
/^[1-9]\d{0,3}(?:\.\d)?$|^0\.[1-9]$/

Первый вариант соответствует любому числу от 1.0 до 9999.9.Первая цифра должна быть не менее 1, что исключает начальные нули.Часть дроби является необязательной ((?:\.\d)?), поэтому она также соответствует целым числам от 1 до 9999.Вторая альтернатива обрабатывает особые случаи от 0.1 до 0.9.

1 голос
/ 03 января 2011

Похоже, что ваше регулярное выражение требует от 0 до 9999 или от 0,0 до 9999,9, но вы не хотите принимать только 0 или серию нулей.

В таком случае, я быскажем, используйте что-то похожее на ответ Кена и обработайте его как число с плавающей точкой, затем убедитесь, что число с плавающей точкой выше 0 и ниже 9999,9:

var val = parseFloat($("#txt1").val());
if(isNan(val) || val <= 0 || val > 9999.9) {
    alert("Please enter a value between 0 and 9999.9");
}
0 голосов
/ 04 октября 2013

Нет необходимости в Regex или чем-то еще, довольно просто.

if(('#txt1').val() < 0.1 ){
    alert("Please Enter Correct value");
}

Ну вот, проблема решена

0 голосов
/ 03 января 2011

Если вам нужно использовать регулярное выражение и просто добавить проверку того, что строка не состоит полностью из нулей, вы можете добавить отрицательное прогнозное выражение: (?!0+$) и заключить чередование в группу без захвата:

/^(?!0+$)(?:[0-9][0-9]{0,3}|[0-9][0-9]{0,3}[\.][0-9])$/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...