rules.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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, min, 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.split('.').pop().toLowerCase(), 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._getField(input).removeData('idealforms-value');
  52. self._validate(input, false, true);
  53. });
  54. return input.value == $target.val();
  55. },
  56. date: function(input, value, format) {
  57. format = format || 'mm/dd/yyyy';
  58. var delimiter = /[^mdy]/.exec(format)[0]
  59. , theFormat = format.split(delimiter)
  60. , theDate = value.split(delimiter);
  61. function isDate(date, format) {
  62. var m, d, y;
  63. for (var i = 0, len = format.length; i < len; i++) {
  64. if (/m/.test(format[i])) m = date[i];
  65. if (/d/.test(format[i])) d = date[i];
  66. if (/y/.test(format[i])) y = date[i];
  67. }
  68. if (!m || !d || !y) return false;
  69. return m > 0 && m < 13 &&
  70. y && y.length == 4 &&
  71. d > 0 && d <= (new Date(y, m, 0)).getDate();
  72. }
  73. return isDate(theDate, theFormat);
  74. }
  75. };