§3. Проверки строк на числа и даты

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

Приступим.

String.prototype.isDigits=function()
// проверяет, является ли строка
// последовательностью цифр
{
  var r=/^\d+$/;
  return r.test(this);
}
String.prototype.isInt=function()
// проверяет, является ли строка целым числом
{
  var r=/^[+\-]?\d+$/;
  return r.test(this);
}
String.prototype.isIntStr=function()
// проверяет, является ли строка
// форматированным целым числом
// с (необязательным) разделением триад цифр пробелом
{
  var r1=/^(?:[+\-](?:[ ]?))?(?:\d{1,3})(?:[ ]\d{3})+$/;
  var r2=/^(?:[+\-](?:[ ])?)?\d+$/;
  return r1.test(this.trim()) || r2.test(this.trim());
}
String.prototype.isFloat=function()
// проверяет, является ли строка дробным числом
// с разделителем "точка"
{
  var r=/^[+\-]?\d+(?:\.\d+)?$/;
  return r.test(this);
}
String.prototype.isFloatStr=function()
// проверяет, является ли строка форматированным
// дробным числом с разделителем "запятая" или "точка"
// и (необязательно) с разделением триад цифр пробелом
{
  var r1=/^(?:[+\-](?:[ ]?))?(?:\d{1,3})(?:\s\d{3})+(?:[\.,]\d+)?$/;
  var r2=/^(?:[+\-](?:[ ])?)?\d+(?:[\.,]\d+)?$/;
  return r1.test(this.trim()) || r2.test(this.trim());
}
String.prototype.isDate=function()
// проверяет, является ли строка
// датой в формате YYYY-MM-DD
{
  var r=/^(\d{4})-(\d{2})-(\d{2})$/;
  if (r.test(this))
  {
    var y=RegExp.$1*1;
    var m=RegExp.$2*1;
    var d=RegExp.$3*1;
    var test=new Date(y,m-1,d);
    return
    (
      test.getFullYear()==y &&
      test.getMonth()==m-1 &&
      test.getDate()==d
    );
  }
  else
    return false;
}
String.prototype.isDateStr=function()
// проверяет, является ли строка
// датой в формате DD.MM.YYYY
{
  var r=/^(\d{2})-(\d{2})-(\d{4})$/;
  if (r.test(this))
  {
    var y=RegExp.$3*1;
    var m=RegExp.$2*1;
    var d=RegExp.$1*1;
    var test=new Date(y,m-1,d);
    return
    (
      test.getFullYear()==y &&
      test.getMonth()==m-1 &&
      test.getDate()==d
    );
  }
  else
    return false;
}
Запись опубликована в рубрике JavaScript с метками , . Добавьте в закладки постоянную ссылку.

1 комментарий: §3. Проверки строк на числа и даты

  1. shkarbatov говорит:

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

    Я вот пробовал, но точку можно ввести много раз и ее можно ввести первым символом.
    /[^\d.]/g

    И можно вводить как угодно: ….22222.2.2.

    Помогите пожалуйста

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>