Skip to content

Commit

Permalink
added email/url validator.
Browse files Browse the repository at this point in the history
  • Loading branch information
kumatch committed Apr 18, 2012
1 parent 31c267e commit 3590181
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 0 deletions.
21 changes: 21 additions & 0 deletions lib/validator.js
Expand Up @@ -151,6 +151,27 @@ var validations = {
} else {
callback(Error());
}
},


Url: function (val, callback) {
var pattern = /^(?:(?:ht|f)tp(?:s?)\:\/\/|~\/|\/)?(?:\w+:\w+@)?((?:(?:[-\w\d{1-3}]+\.)+(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|edu|co\.uk|ac\.uk|it|fr|tv|museum|asia|local|travel|[a-z]{2}))|((\b25[0-5]\b|\b[2][0-4][0-9]\b|\b[0-1]?[0-9]?[0-9]\b)(\.(\b25[0-5]\b|\b[2][0-4][0-9]\b|\b[0-1]?[0-9]?[0-9]\b)){3}))(?::[\d]{1,5})?(?:(?:(?:\/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|\/)+|\?|#)?(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?:#(?:[-\w~!$ |\/.,*:;=]|%[a-f\d]{2})*)?$/;

if (pattern.test(val)) {
callback(null, val);
} else {
callback(Error());
}
},

Email: function (val, callback) {
var pattern = /^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!\.)){0,61}[a-zA-Z0-9]?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/;

if (pattern.test(val)) {
callback(null, val);
} else {
callback(Error());
}
}
};

Expand Down
33 changes: 33 additions & 0 deletions test/validator/Email.test.js
@@ -0,0 +1,33 @@
var validator = require('../../lib/validator');
var validCheck = require('./validator_check').valid;
var invalidCheck = require('./validator_check').invalid;

var valids = [ 'foo@example.com', 'foo.bar+baz@mail.example.com' ];
var invalids = [ 'foo', 10, -20, 3.4, { bar: 123 }, function () {}, [10, 20], true, '', null, undefined, NaN ];

describe('isEmail validator', function() {

var isEmail = validator.isEmail;

valids.forEach(function (val) {
validCheck(isEmail, val);
});

invalids.forEach(function (val) {
invalidCheck(isEmail, val);
});
});


describe('notEmail validator', function() {

var notEmail = validator.notEmail;

invalids.forEach(function (val) {
validCheck(notEmail, val);
});

valids.forEach(function (val) {
invalidCheck(notEmail, val);
});
});
33 changes: 33 additions & 0 deletions test/validator/Url.test.js
@@ -0,0 +1,33 @@
var validator = require('../../lib/validator');
var validCheck = require('./validator_check').valid;
var invalidCheck = require('./validator_check').invalid;

var valids = [ 'http://example.com/', 'https://example.com/path/to/page.html' ];
var invalids = [ 'foo', 10, -20, 3.4, { bar: 123 }, function () {}, [10, 20], true, '', null, undefined, NaN ];

describe('isUrl validator', function() {

var isUrl = validator.isUrl;

valids.forEach(function (val) {
validCheck(isUrl, val);
});

invalids.forEach(function (val) {
invalidCheck(isUrl, val);
});
});


describe('notUrl validator', function() {

var notUrl = validator.notUrl;

invalids.forEach(function (val) {
validCheck(notUrl, val);
});

valids.forEach(function (val) {
invalidCheck(notUrl, val);
});
});

0 comments on commit 3590181

Please sign in to comment.