is.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. const toString = Object.prototype.toString;
  2. export function is(val, type) {
  3. return toString.call(val) === `[object ${type}]`;
  4. }
  5. export function isDef(val) {
  6. return typeof val !== 'undefined';
  7. }
  8. export function isUnDef(val) {
  9. return !isDef(val);
  10. }
  11. export function isObject(val) {
  12. return val !== null && is(val, 'Object');
  13. }
  14. export function isEmpty(val) {
  15. if (isArray(val) || isString(val)) {
  16. return val.length === 0;
  17. }
  18. if (val instanceof Map || val instanceof Set) {
  19. return val.size === 0;
  20. }
  21. if (isObject(val)) {
  22. return Object.keys(val).length === 0;
  23. }
  24. return false;
  25. }
  26. export function isDate(val) {
  27. return is(val, 'Date');
  28. }
  29. export function isNull(val) {
  30. return val === null;
  31. }
  32. export function isNullAndUnDef(val) {
  33. return isUnDef(val) && isNull(val);
  34. }
  35. export function isNullOrUnDef(val) {
  36. return isUnDef(val) || isNull(val);
  37. }
  38. export function isNumber(val) {
  39. return is(val, 'Number');
  40. }
  41. export function isPromise(val) {
  42. return is(val, 'Promise') && isObject(val) && isFunction(val.then) && isFunction(val.catch);
  43. }
  44. export function isString(val) {
  45. return is(val, 'String');
  46. }
  47. export function isFunction(val) {
  48. return typeof val === 'function';
  49. }
  50. export function isBoolean(val) {
  51. return is(val, 'Boolean');
  52. }
  53. export function isRegExp(val) {
  54. return is(val, 'RegExp');
  55. }
  56. export function isArray(val) {
  57. return val && Array.isArray(val);
  58. }
  59. export function isMap(val) {
  60. return is(val, 'Map');
  61. }
  62. export function isPhone(phone) {
  63. const reg = /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/;
  64. return reg.test(phone);
  65. }
  66. export function isEmail(email) {
  67. const reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
  68. return reg.test(email);
  69. }
  70. // 常用正则
  71. let Regular = {
  72. digits: /^\d+$/, // 正整数
  73. letter: /^[a-zA-Z]*$/, // 数字
  74. chinese: /^[\u4e00-\u9fa5]+$/gi, //中文
  75. phone: /0?(13|14|15|17|18|19)[0-9]{9}/, // 手机号
  76. amount: /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/, // 金额。值允许两位小数
  77. email: /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/, // 邮箱
  78. 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]$/, // 身份证
  79. empty: (value) => { // 是否为空
  80. switch (typeof value) {
  81. case 'undefined':
  82. return true;
  83. case 'string':
  84. if (value.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '').length == 0) return true;
  85. break;
  86. case 'boolean':
  87. if (!value) return true;
  88. break;
  89. case 'number':
  90. if (0 === value || isNaN(value)) return true;
  91. break;
  92. case 'object':
  93. if (null === value || value.length === 0) return true;
  94. for (var i in value) {
  95. return false;
  96. }
  97. return true;
  98. }
  99. return false;
  100. }
  101. }