formRules.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. // async-validator rules
  2. // to view at https://github.com/yiminghe/async-validator
  3. const username = [
  4. {
  5. required: true,
  6. pattern: /^[a-zA-Z0-9][a-zA-Z0-9_]{2,19}$/,
  7. message: "用户名必须以字母或数字开头,长度为3-20位,允许字母数字下划线",
  8. trigger: "change",
  9. },
  10. ];
  11. const commonCode = ({ prop, min = 3, max = 20 }) => {
  12. return [
  13. {
  14. required: true,
  15. pattern: new RegExp(`^[a-zA-Z0-9_]{${min},${max}}$`),
  16. message: `${prop}只能由数字、字母和下划线组成,长度${min}-${max}个字符`,
  17. trigger: "change",
  18. },
  19. ];
  20. };
  21. const email = [
  22. {
  23. required: true,
  24. type: "email",
  25. message: "邮箱格式不正确",
  26. trigger: "change",
  27. },
  28. ];
  29. const password = [
  30. {
  31. required: true,
  32. pattern: /^[a-zA-Z0-9_]{6,20}$/,
  33. message: "密码只能由数字、字母和下划线组成,长度6-20个字符",
  34. trigger: "change",
  35. },
  36. ];
  37. const phone = [
  38. {
  39. required: true,
  40. pattern: /^1\d{10}$/,
  41. message: "请输入合适的手机号码",
  42. trigger: "change",
  43. },
  44. ];
  45. const smscode = [
  46. {
  47. required: true,
  48. pattern: /^[a-zA-Z0-9]{4}$/,
  49. message: "请输入4位短信验证码",
  50. trigger: "change",
  51. },
  52. ];
  53. const numberValidator = ({ prop, min = 1, max = 100 }) => {
  54. return [
  55. {
  56. required: true,
  57. validator: (rule, value, callback) => {
  58. if (!value && value !== 0) {
  59. return callback(new Error(`请输入${prop}`));
  60. }
  61. if (!Number.isInteger(value)) {
  62. callback(new Error("请输入数字值"));
  63. } else {
  64. if (value < min || value > max) {
  65. callback(new Error(`${prop}的大小只能介于${min}-${max}之间。`));
  66. } else {
  67. callback();
  68. }
  69. }
  70. },
  71. trigger: "change",
  72. },
  73. ];
  74. };
  75. // 正反斜杠限制输入
  76. const slashesLimitValidator = [
  77. {
  78. validator: (rule, value, callback) => {
  79. if (value.match(/[\\/]/g)) {
  80. callback(new Error("禁止输入正斜杠和反斜杠"));
  81. } else {
  82. callback();
  83. }
  84. },
  85. },
  86. ];
  87. export {
  88. username,
  89. commonCode,
  90. email,
  91. password,
  92. phone,
  93. smscode,
  94. numberValidator,
  95. slashesLimitValidator,
  96. };