rules.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. /**
  2. * Rules
  3. */
  4. module.exports = {
  5. required: /.+/,
  6. digits: /^\d+$/,
  7. email: /^[^@]+@[^@]+\..{2,6}$/,
  8. username: /^[a-z](?=[\w.]{3,31}$)\w*\.?\w*$/i,
  9. pass: /(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}/,
  10. strongpass: /(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/,
  11. phone: /^[2-9]\d{2}-\d{3}-\d{4}$/,
  12. zip: /^\d{5}$|^\d{5}-\d{4}$/,
  13. url: /^(?:(ftp|http|https):\/\/)?(?:[\w\-]+\.)+[a-z]{2,6}([\:\/?#].*)?$/i,
  14. number: function(input, value) {
  15. return !isNaN(value);
  16. },
  17. range: function(input, value, mix, max) {
  18. return Number(value) >= min && Number(value) <= max;
  19. },
  20. min: function(input, value, min) {
  21. return value.length >= min;
  22. },
  23. max: function(input, value, max) {
  24. return value.length <= max;
  25. },
  26. minoption: function(input, value, min) {
  27. return this._getRelated(input).filter(':checked').length >= min;
  28. },
  29. maxoption: function(input, value, max) {
  30. return this._getRelated(input).filter(':checked').length <= max;
  31. },
  32. minmax: function(input, value, min, max) {
  33. return value.length >= min && value.length <= max;
  34. },
  35. select: function(input, value, def) {
  36. return value != def;
  37. },
  38. extension: function(input) {
  39. var extensions = [].slice.call(arguments, 1)
  40. , valid = false;
  41. $.each(input.files || [{name: input.value}], function(i, file) {
  42. valid = $.inArray(file.name.match(/\.(.+)$/)[1], extensions) > -1;
  43. });
  44. return valid;
  45. },
  46. equalto: function(input, value, target) {
  47. var self = this
  48. , $target = $('[name="'+ target +'"]');
  49. if (this.getInvalid().find($target).length) return false;
  50. $target.off('keyup.equalto').on('keyup.equalto', function() {
  51. self._validate(input, false, true);
  52. });
  53. return input.value == $target.val();
  54. },
  55. date: function(input, value, format) {
  56. format = format || 'mm/dd/yyyy';
  57. var delimiter = /[^mdy]/.exec(format)[0]
  58. , theFormat = format.split(delimiter)
  59. , theDate = value.split(delimiter);
  60. function isDate(date, format) {
  61. var m, d, y;
  62. for (var i = 0, len = format.length; i < len; i++) {
  63. if (/m/.test(format[i])) m = date[i];
  64. if (/d/.test(format[i])) d = date[i];
  65. if (/y/.test(format[i])) y = date[i];
  66. }
  67. if (!m || !d || !y) return false;
  68. return m > 0 && m < 13 &&
  69. y && y.length == 4 &&
  70. d > 0 && d <= (new Date(y, m, 0)).getDate();
  71. }
  72. return isDate(theDate, theFormat);
  73. }
  74. };