rules.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. const validateMobile = (rule, value, callback) => {
  2. let reg = /^1(3|4|5|7|8)\d{9}$/
  3. if (!reg.test(value)) {
  4. callback('请输入正确手机号')
  5. } else {
  6. callback()
  7. }
  8. }
  9. const validateEn = (rule, value, callback) => {
  10. let reg = /^[_a-zA-Z0-9]+$/
  11. let reg2 = /^.{4,18}$/
  12. // 长度为6到18个字符
  13. if (value !== '' && !reg.test(value)) {
  14. callback('只允许字母、数字、下划线')
  15. } else if (value !== '' && !reg2.test(value)) {
  16. callback('长度6到18个字符')
  17. } else {
  18. callback()
  19. }
  20. }
  21. export const rules = {
  22. mobile: [{
  23. required: true,
  24. message: '请输入手机号',
  25. trigger: 'blur'
  26. }, { validator: validateMobile, trigger: 'blur' }],
  27. userName: [{
  28. required: true, message: '请输入用户名', trigger: 'blur'
  29. }, { validator: validateEn }],
  30. email: [
  31. { required: false, type: 'email', message: '邮箱格式不正确', trigger: 'blur' }
  32. ],
  33. // 验证自然数
  34. naturalNumber: /^(([0-9]*[1-9][0-9]*)|(0+))$/,
  35. naturalNumberMsg: '请输入自然数',
  36. // 英文
  37. english: /^.[A-Za-z]+$/,
  38. englishMsg: '请输入英文字符',
  39. // 座机
  40. telephone: /^\d{3}-\d{7,8}|\d{4}-\d{7,8}$/,
  41. telephoneMsg: '请输入正确的座机号',
  42. // 银行卡号码
  43. bankCard: /^[1-9]\d{9,19}$/,
  44. bankCardMsg: '请输入正确的银行卡号码',
  45. // 证件号码
  46. IDNumber: /^[a-z0-9A-Z]{0,50}$/,
  47. IDNumberMsg: '请输入正确的证件号码',
  48. // 身份证号码,包括15位和18位的
  49. IDCard: /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{7}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)/,
  50. IDCardMsg: '请输入正确的身份证号码',
  51. // QQ号码
  52. qq: /^[1-9]\d{4,11}$/,
  53. qqMsg: '请输入正确的QQ号码',
  54. // 网址, 仅支持http和https开头的
  55. url: /^(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-.,@?^=%&:/~+#]*[\w\-@?^=%&/~+#])?$/,
  56. urlMsg: '请输入以http和https开头的网址',
  57. // 0到20位的英文字符和数字
  58. enNum0to20: /^[a-z0-9A-Z]{0,20}$/,
  59. enNum0to20Msg: '请输入20位以内的英文字符和数字',
  60. // 2到100位的中英文字符和空格
  61. cnEnSpace2to100: /^[a-zA-Z\u4E00-\u9FA5\s*]{2,100}$/,
  62. cnEnSpace2to100Msg: '请输入2到100位的中英文字符和空格',
  63. // 数字和换行符
  64. numLinefeed: /^[0-9\n*]+$/,
  65. numLinefeedMsg: '请输入数字和换行符',
  66. // 255位以内的字符
  67. char0to255: /^.{0,255}$/,
  68. char0to255Msg: '请输入255位以内的字符',
  69. required: function(min, max) {
  70. let rule = [{ required: true, message: '', trigger: 'blur' }]
  71. if (min) {
  72. let r = { min: min, message: '最小长度' + min + '位字符' }
  73. rule.push(r)
  74. }
  75. if (max) {
  76. let m = { max: max, message: '最大长度' + max + '位字符' }
  77. rule.push(m)
  78. }
  79. return rule
  80. },
  81. select: function() {
  82. let rule = [{ required: true, message: '', trigger: 'change' }]
  83. return rule
  84. },
  85. checked: function(min, max) {
  86. let rule = [{ required: true, type: 'array', message: '', trigger: 'change' }]
  87. if (min) {
  88. let r = { type: 'array', min: min, message: '最少选择' + min + '项' }
  89. rule.push(r)
  90. }
  91. if (max) {
  92. let m = { type: 'array', max: max, message: '最多选择' + max + '项' }
  93. rule.push(m)
  94. }
  95. return rule
  96. }
  97. }
  98. /**
  99. * @description 排序值验证,排序值不可以大于255
  100. */
  101. export const validateOrder = function(rule, value, callback) {
  102. if (parseInt(value) > 255) {
  103. return callback(new Error('排序值不可以大于255'))
  104. } else {
  105. callback()
  106. }
  107. }