CheckUtils.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /**
  2. * Author: imengyu 2021-10-16
  3. *
  4. * 检查工具类,此类提供了一些方法用于检查用户输入字符串是否满足要求。
  5. */
  6. /**
  7. * 检查用户输入字符串是否是合法身份证号
  8. * @param {string} str 输入字符串
  9. * @returns {boolean} 返回结果
  10. */
  11. function checkIsCardNumber(str: string) {
  12. return /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(str);
  13. }
  14. /**
  15. * 检查用户输入字符串是否是合法中文名字
  16. * @param {string} str
  17. * @returns {boolean} 返回结果
  18. */
  19. function checkIsChineseName(str: string) {
  20. return /[\u4e00-\u9fa5]{2,5}/.test(str);
  21. }
  22. /**
  23. * 检查用户输入字符串是否是中国手机号
  24. * @param {string} str
  25. * @returns {boolean} 返回结果
  26. */
  27. function checkIsChinesePhoneNumber(str: string) {
  28. return /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(str);
  29. }
  30. /**
  31. * 检查用户输入字符串是否是网址
  32. * @param {string} str
  33. */
  34. function checkIsUrl(str: string) {
  35. return /^(http|https):\/\/[a-zA-Z0-9]+\.[a-zA-Z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/.test(str);
  36. }
  37. function checkIsImageFile(str: string) {
  38. return /\.(jpg|jpeg|png|gif|bmp|webp|svg)$/.test(str);
  39. }
  40. /**
  41. * 检查用户输入字符串是否为空
  42. * @param {string} str
  43. * @returns {boolean} 返回结果
  44. */
  45. function checkIsNotEmpty(str: string) {
  46. return typeof str === 'string' && str != '';
  47. }
  48. /**
  49. * 检查用户输入字符串是否为空(同样检查空格)
  50. * @param {string} str
  51. * @returns {boolean} 返回结果
  52. */
  53. function checkIsNotEmptyAndSpace(str: string) {
  54. return typeof str === 'string' && str != '' && str.trim() != '';
  55. }
  56. /**
  57. * 比较版本号
  58. * @param v1
  59. * @param v2
  60. * @returns
  61. */
  62. function compareVersion(v1: any, v2: any) {
  63. v1 = v1.split('.');
  64. v2 = v2.split('.');
  65. const len = Math.max(v1.length, v2.length)
  66. while (v1.length < len) {
  67. v1.push('0')
  68. }
  69. while (v2.length < len) {
  70. v2.push('0')
  71. }
  72. for (let i = 0; i < len; i++) {
  73. const num1 = parseInt(v1[i])
  74. const num2 = parseInt(v2[i])
  75. if (num1 > num2) {
  76. return 1
  77. } else if (num1 < num2) {
  78. return -1
  79. }
  80. }
  81. return 0
  82. }
  83. export default {
  84. checkIsNotEmpty,
  85. checkIsNotEmptyAndSpace,
  86. checkIsCardNumber,
  87. checkIsChineseName,
  88. checkIsChinesePhoneNumber,
  89. checkIsUrl,
  90. checkIsImageFile,
  91. compareVersion,
  92. }