Skip to content

Instantly share code, notes, and snippets.

@nati
Created January 20, 2016 19:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nati/d776afc4dfbe69e9965d to your computer and use it in GitHub Desktop.
Save nati/d776afc4dfbe69e9965d to your computer and use it in GitHub Desktop.
ZSchema.registerFormat("yaml", function (str) {
return true;
});
ZSchema.registerFormat("javascript", function (str) {
return true;
});
ZSchema.registerFormat("jsonschema", function (str) {
return true;
});
ZSchema.registerFormat("uuid", function (str) {
var formats = [
/^[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[1-5][A-Fa-f0-9]{3}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$/,
/^[A-Fa-f0-9]{8}[A-Fa-f0-9]{4}[1-5][A-Fa-f0-9]{3}[A-Fa-f0-9]{4}[A-Fa-f0-9]{12}$/
];
return _.any(formats, function(regexp) {return regexp.test(str);});
});
ZSchema.registerFormat("text", function (str) {
return true;
});
ZSchema.registerFormat("mac", function (str) {
return RegExp("^([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$").test(str);
});
ZSchema.registerFormat("cidr", function (str) {
var parts = str.split("/");
if (parts.length !== 2) {
return false;
}
var address = parts[0], mask = parts[1];
var isIPv4 = function (address) {
return new RegExp("^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$").test(address);
};
var isIPv4Mask = function (mask) {
var value = parseInt(mask, 10);
return RegExp("^\\d+$").test(mask) && (value >= 1) && (value <= 32);
};
return isIPv4(address) && isIPv4Mask(mask);
});
ZSchema.registerFormat("port", function (str) {
var value = parseInt(str, 10);
return RegExp("^\\d+$").test(str) && (value >= 1) && (value <= 65535);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment