Сегодня научимся проверять, содержится ли в строке целое или дробное число, а также дата в двух форматах.
Приступим.
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;
}
Не забудьте скачать и подключить всю библиотеку. В ней содержатся все рассмотренные здесь методы, а также многие другие.
Подскажите пожалуйста, мне надо регулярка, которая разрешала бы вводить только цифры и 1 точку, причем точка не может быть первым символом, и точка должна вводиться только одна.
Я вот пробовал, но точку можно ввести много раз и ее можно ввести первым символом.
/[^\d.]/g
И можно вводить как угодно: ….22222.2.2.
Помогите пожалуйста