util-helpers 4.13.1 → 4.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/README.md +16 -6
  2. package/dist/util-helpers.js +940 -536
  3. package/dist/util-helpers.js.map +1 -1
  4. package/dist/util-helpers.min.js +1 -1
  5. package/dist/util-helpers.min.js.map +1 -1
  6. package/esm/blobToDataURL.js +2 -4
  7. package/esm/bytesToSize.js +13 -5
  8. package/esm/calculateCursorPosition.js +7 -12
  9. package/esm/dataURLToBlob.js +2 -5
  10. package/esm/divide.js +9 -13
  11. package/esm/findTreeNode.js +66 -0
  12. package/esm/findTreeSelect.js +80 -0
  13. package/esm/formatBankCard.js +11 -11
  14. package/esm/formatMobile.js +11 -14
  15. package/esm/formatMoney.js +24 -35
  16. package/esm/index.js +9 -4
  17. package/esm/isBankCard.js +9 -13
  18. package/esm/isBusinessLicense.js +19 -20
  19. package/esm/isChinese.js +6 -6
  20. package/esm/isEmail.js +3 -3
  21. package/esm/isHMCard.js +3 -3
  22. package/esm/isIPv4.js +3 -3
  23. package/esm/isIPv6.js +3 -3
  24. package/esm/isIdCard.js +9 -17
  25. package/esm/isMobile.js +3 -3
  26. package/esm/isPassport.js +3 -3
  27. package/esm/isPassword.js +6 -7
  28. package/esm/isPostcode.js +3 -3
  29. package/esm/isPromiseLike.js +0 -2
  30. package/esm/isQQ.js +3 -3
  31. package/esm/isSocialCreditCode.js +29 -28
  32. package/esm/isSwiftCode.js +1 -2
  33. package/esm/isTWCard.js +6 -7
  34. package/esm/isTelephone.js +3 -3
  35. package/esm/isUrl.js +7 -3
  36. package/esm/isVehicle.js +3 -3
  37. package/esm/isWX.js +3 -3
  38. package/esm/listToTree.js +125 -0
  39. package/esm/minus.js +7 -11
  40. package/esm/normalizeString.js +1 -3
  41. package/esm/numberToChinese.js +43 -52
  42. package/esm/padZero.js +1 -5
  43. package/esm/parseIdCard.js +27 -23
  44. package/esm/plus.js +7 -11
  45. package/esm/randomString.js +2 -8
  46. package/esm/replaceChar.js +11 -16
  47. package/esm/round.js +4 -5
  48. package/esm/safeDate.js +5 -7
  49. package/esm/setDataURLPrefix.js +0 -1
  50. package/esm/strlen.js +1 -5
  51. package/esm/times.js +7 -11
  52. package/esm/transformFieldNames.doc.js +35 -0
  53. package/esm/transformFieldNames.js +100 -0
  54. package/esm/transformFieldNames.type.js +19 -0
  55. package/esm/treeToList.js +88 -0
  56. package/esm/utils/config.js +4 -4
  57. package/esm/utils/constants.js +2 -2
  58. package/esm/utils/convertToString.js +1 -2
  59. package/esm/utils/devWarn.js +1 -3
  60. package/esm/utils/math.util.js +20 -29
  61. package/esm/utils/type/index.js +1 -1
  62. package/esm/utils/type/isArguments.js +1 -2
  63. package/esm/utils/type/isArray.js +1 -2
  64. package/esm/utils/type/isBoolean.js +1 -2
  65. package/esm/utils/type/isDate.js +1 -2
  66. package/esm/utils/type/isError.js +1 -2
  67. package/esm/utils/type/isFunction.js +1 -2
  68. package/esm/utils/type/isMap.js +1 -2
  69. package/esm/utils/type/isNaN.js +1 -2
  70. package/esm/utils/type/isNil.js +1 -2
  71. package/esm/utils/type/isNull.js +0 -1
  72. package/esm/utils/type/isNumber.js +1 -2
  73. package/esm/utils/type/isObject.js +0 -3
  74. package/esm/utils/type/isRegExp.js +1 -2
  75. package/esm/utils/type/isSet.js +1 -2
  76. package/esm/utils/type/isString.js +1 -2
  77. package/esm/utils/type/isSymbol.js +1 -2
  78. package/esm/utils/type/isType.js +1 -2
  79. package/esm/utils/type/isUndefined.js +0 -1
  80. package/esm/utils/type/isWeakMap.js +1 -2
  81. package/esm/utils/type/isWeakSet.js +1 -2
  82. package/esm/validatePassword.js +27 -50
  83. package/esm/waitTime.js +0 -1
  84. package/lib/blobToDataURL.js +2 -5
  85. package/lib/bytesToSize.js +13 -6
  86. package/lib/calculateCursorPosition.js +4 -13
  87. package/lib/dataURLToBlob.js +2 -6
  88. package/lib/divide.js +8 -22
  89. package/lib/findTreeNode.js +76 -0
  90. package/lib/findTreeSelect.js +86 -0
  91. package/lib/formatBankCard.js +10 -13
  92. package/lib/formatMobile.js +10 -16
  93. package/lib/formatMoney.js +25 -47
  94. package/lib/index.js +115 -126
  95. package/lib/isBankCard.js +7 -15
  96. package/lib/isBusinessLicense.js +17 -22
  97. package/lib/isChinese.js +6 -9
  98. package/lib/isEmail.js +1 -5
  99. package/lib/isHMCard.js +1 -5
  100. package/lib/isIPv4.js +1 -5
  101. package/lib/isIPv6.js +1 -5
  102. package/lib/isIdCard.js +7 -19
  103. package/lib/isMobile.js +1 -5
  104. package/lib/isPassport.js +1 -5
  105. package/lib/isPassword.js +5 -9
  106. package/lib/isPostcode.js +1 -5
  107. package/lib/isPromiseLike.js +1 -4
  108. package/lib/isQQ.js +1 -5
  109. package/lib/isSocialCreditCode.js +27 -30
  110. package/lib/isSwiftCode.js +1 -5
  111. package/lib/isTWCard.js +4 -9
  112. package/lib/isTelephone.js +1 -5
  113. package/lib/isUrl.js +5 -5
  114. package/lib/isVehicle.js +1 -5
  115. package/lib/isWX.js +1 -5
  116. package/lib/listToTree.js +134 -0
  117. package/lib/minus.js +6 -20
  118. package/lib/normalizeString.js +0 -6
  119. package/lib/numberToChinese.js +41 -55
  120. package/lib/padZero.js +0 -7
  121. package/lib/parseIdCard.js +30 -29
  122. package/lib/plus.js +6 -20
  123. package/lib/randomString.js +2 -8
  124. package/lib/replaceChar.js +10 -18
  125. package/lib/round.js +3 -9
  126. package/lib/safeDate.js +4 -13
  127. package/lib/setDataURLPrefix.js +0 -2
  128. package/lib/strlen.js +0 -7
  129. package/lib/times.js +6 -18
  130. package/lib/transformFieldNames.doc.js +42 -0
  131. package/lib/transformFieldNames.js +106 -0
  132. package/lib/transformFieldNames.type.js +5 -0
  133. package/lib/treeToList.js +96 -0
  134. package/lib/utils/config.js +6 -6
  135. package/lib/utils/constants.js +2 -2
  136. package/lib/utils/convertToString.js +0 -4
  137. package/lib/utils/devWarn.js +0 -4
  138. package/lib/utils/math.util.js +23 -45
  139. package/lib/utils/type/index.js +20 -39
  140. package/lib/utils/type/isArguments.js +0 -4
  141. package/lib/utils/type/isArray.js +0 -4
  142. package/lib/utils/type/isBoolean.js +0 -4
  143. package/lib/utils/type/isDate.js +0 -4
  144. package/lib/utils/type/isError.js +0 -4
  145. package/lib/utils/type/isFunction.js +0 -4
  146. package/lib/utils/type/isMap.js +0 -4
  147. package/lib/utils/type/isNaN.js +0 -4
  148. package/lib/utils/type/isNil.js +0 -5
  149. package/lib/utils/type/isNull.js +0 -2
  150. package/lib/utils/type/isNumber.js +0 -4
  151. package/lib/utils/type/isObject.js +1 -5
  152. package/lib/utils/type/isRegExp.js +0 -4
  153. package/lib/utils/type/isSet.js +0 -4
  154. package/lib/utils/type/isString.js +0 -4
  155. package/lib/utils/type/isSymbol.js +0 -4
  156. package/lib/utils/type/isType.js +1 -2
  157. package/lib/utils/type/isUndefined.js +0 -2
  158. package/lib/utils/type/isWeakMap.js +0 -4
  159. package/lib/utils/type/isWeakSet.js +0 -4
  160. package/lib/validatePassword.js +27 -53
  161. package/lib/waitTime.js +0 -2
  162. package/package.json +6 -5
  163. package/types/bytesToSize.d.ts +9 -1
  164. package/types/findTreeNode.d.ts +26 -0
  165. package/types/findTreeSelect.d.ts +26 -0
  166. package/types/formatBankCard.d.ts +3 -3
  167. package/types/formatMobile.d.ts +4 -4
  168. package/types/index.d.ts +5 -0
  169. package/types/isIdCard.d.ts +2 -0
  170. package/types/isUrl.d.ts +2 -0
  171. package/types/listToTree.d.ts +43 -0
  172. package/types/transformFieldNames.d.ts +35 -0
  173. package/types/transformFieldNames.type.d.ts +2 -0
  174. package/types/treeToList.d.ts +20 -0
package/esm/isBankCard.js CHANGED
@@ -1,27 +1,28 @@
1
- import normalizeString from './normalizeString'; // 非0开头,10~21位数字
1
+ import normalizeString from './normalizeString';
2
2
 
3
- var reg = /^[1-9]\d{9,20}$/; // 8~30位数字
3
+ // 非0开头,10~21位数字
4
+ var reg = /^[1-9]\d{9,20}$/;
4
5
 
6
+ // 8~30位数字
5
7
  var regLoose = /^\d{8,30}$/;
8
+
6
9
  /**
7
10
  * luhn 计算校验位
8
11
  * @private
9
12
  * @param {string} numStr 银行卡前面数字
10
13
  * @returns {number}
11
14
  */
12
-
13
15
  function sumCheckCode(numStr) {
14
16
  var numArr = (numStr + '').replace(/\D/g, '').split('').reverse();
15
17
  var sum = 0;
16
-
17
18
  for (var i = 0; i < numArr.length; i++) {
18
19
  var currNum = parseInt(numArr[i]);
19
20
  sum += i % 2 === 0 ? currNum * 2 - (currNum > 4 ? 9 : 0) : currNum;
20
21
  }
21
-
22
22
  var mod = sum % 10;
23
23
  return mod !== 0 ? 10 - mod : 0;
24
24
  }
25
+
25
26
  /**
26
27
  * 检测值是否为银行卡号。正常模式(非0开头,10~21位数字)宽松模式(8~30位数字)
27
28
  *
@@ -44,24 +45,19 @@ function sumCheckCode(numStr) {
44
45
  * isBankCard('123456789', { loose: true }); // true
45
46
  *
46
47
  */
47
-
48
-
49
48
  function isBankCard(value) {
50
49
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
51
50
  var _options$loose = options.loose,
52
- loose = _options$loose === void 0 ? false : _options$loose,
53
- _options$luhn = options.luhn,
54
- luhn = _options$luhn === void 0 ? false : _options$luhn;
51
+ loose = _options$loose === void 0 ? false : _options$loose,
52
+ _options$luhn = options.luhn,
53
+ luhn = _options$luhn === void 0 ? false : _options$luhn;
55
54
  var valueStr = normalizeString(value);
56
55
  var validateResult = loose ? regLoose.test(valueStr) : reg.test(valueStr);
57
-
58
56
  if (validateResult && luhn) {
59
57
  var precode = valueStr.substring(0, valueStr.length - 1);
60
58
  var checkCode = valueStr[valueStr.length - 1];
61
59
  return checkCode === String(sumCheckCode(precode));
62
60
  }
63
-
64
61
  return validateResult;
65
62
  }
66
-
67
63
  export default isBankCard;
@@ -1,6 +1,8 @@
1
- import normalizeString from './normalizeString'; // 基础规则,由14位数字本体码和1位数字校验码组成,其中本体码从左至右依次为:6位首次登记机关码、8位顺序码。
1
+ import normalizeString from './normalizeString';
2
2
 
3
+ // 基础规则,由14位数字本体码和1位数字校验码组成,其中本体码从左至右依次为:6位首次登记机关码、8位顺序码。
3
4
  var baseReg = /^\d{15}$/;
5
+
4
6
  /**
5
7
  * 计算校验码
6
8
  *
@@ -9,7 +11,6 @@ var baseReg = /^\d{15}$/;
9
11
  * @param {string} preCode 营业执照前14位
10
12
  * @returns {number} 校验码
11
13
  */
12
-
13
14
  function sumCheckCode(preCode) {
14
15
  var retNum; // 校验位数字
15
16
 
@@ -21,17 +22,17 @@ function sumCheckCode(preCode) {
21
22
  sj10 = sj10 === 0 ? 10 : sj10;
22
23
  var pj1 = sj10 * 2;
23
24
  pj = pj1 % 11;
24
- } // 反模10计算
25
-
25
+ }
26
26
 
27
+ // 反模10计算
27
28
  if (pj === 1) {
28
29
  retNum = 0;
29
30
  } else {
30
31
  retNum = 11 - pj;
31
32
  }
32
-
33
33
  return retNum;
34
34
  }
35
+
35
36
  /**
36
37
  * 检测值是否为营业执照号,也叫工商注册号。由14位数字本体码和1位数字校验码组成,其中本体码从左至右依次为:6位首次登记机关码、8位顺序码。
37
38
  *
@@ -54,31 +55,29 @@ function sumCheckCode(preCode) {
54
55
  * isBusinessLicense('31011560098', { checkCode: false }); // false
55
56
  *
56
57
  */
57
-
58
-
59
58
  function isBusinessLicense(value) {
60
59
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
61
- var valueStr = normalizeString(value); // @ts-ignore
60
+ var valueStr = normalizeString(value);
61
+ // @ts-ignore
62
62
  // TODO 下个版本废弃 loose
63
-
64
63
  var _options$loose = options.loose,
65
- loose = _options$loose === void 0 ? false : _options$loose,
66
- _options$checkCode = options.checkCode,
67
- cc = _options$checkCode === void 0 ? true : _options$checkCode;
64
+ loose = _options$loose === void 0 ? false : _options$loose,
65
+ _options$checkCode = options.checkCode,
66
+ cc = _options$checkCode === void 0 ? true : _options$checkCode;
68
67
  var needCheckCode = !loose && cc;
69
- var passBaseRule = baseReg.test(valueStr); // 宽松模式 或 基础规则不通过直接返回
68
+ var passBaseRule = baseReg.test(valueStr);
70
69
 
70
+ // 宽松模式 或 基础规则不通过直接返回
71
71
  if (!needCheckCode || !passBaseRule) {
72
72
  return passBaseRule;
73
- } // 前14位
74
-
75
-
76
- var preCode = valueStr.substring(0, 14); // 校验码
77
-
78
- var lastCode = valueStr.substring(valueStr.length - 1); // 计算校验码
73
+ }
79
74
 
75
+ // 前14位
76
+ var preCode = valueStr.substring(0, 14);
77
+ // 校验码
78
+ var lastCode = valueStr.substring(valueStr.length - 1);
79
+ // 计算校验码
80
80
  var checkCode = sumCheckCode(preCode);
81
81
  return lastCode === String(checkCode);
82
82
  }
83
-
84
83
  export default isBusinessLicense;
package/esm/isChinese.js CHANGED
@@ -21,9 +21,11 @@ var looseChineseRegExp = chineseDictionary.chineseBasic + '+';
21
21
  var chineseRegExp = '^' + chineseDictionary.chineseBasic + '+$';
22
22
  var chineseWithExtend = '(?:' + chineseDictionary.chineseBasic + '|' + chineseDictionary.chineseExtend + '|' + chineseDictionary.chineseExtendA + '|' + chineseDictionary.chineseExtendB + '|' + chineseDictionary.chineseExtendC + '|' + chineseDictionary.chineseExtendD + '|' + chineseDictionary.chineseExtendE + '|' + chineseDictionary.chineseExtendF + ')';
23
23
  var looseChineseExtendRegExp = chineseWithExtend + '+';
24
- var chineseExtendRegExp = '^' + chineseWithExtend + '+$'; // eslint-disable-next-line no-prototype-builtins
24
+ var chineseExtendRegExp = '^' + chineseWithExtend + '+$';
25
25
 
26
+ // eslint-disable-next-line no-prototype-builtins
26
27
  var supportRegExpUnicode = RegExp.prototype.hasOwnProperty('unicode');
28
+
27
29
  /**
28
30
  * 检测值是否为中文
29
31
  *
@@ -55,13 +57,12 @@ var supportRegExpUnicode = RegExp.prototype.hasOwnProperty('unicode');
55
57
  * isChinese('𠮷aa', { useExtend: true, loose: true }); // true
56
58
  *
57
59
  */
58
-
59
60
  function isChinese(value) {
60
61
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
61
62
  var _options$loose = options.loose,
62
- loose = _options$loose === void 0 ? false : _options$loose,
63
- _options$useExtend = options.useExtend,
64
- useExtend = _options$useExtend === void 0 ? false : _options$useExtend;
63
+ loose = _options$loose === void 0 ? false : _options$loose,
64
+ _options$useExtend = options.useExtend,
65
+ useExtend = _options$useExtend === void 0 ? false : _options$useExtend;
65
66
  var valueStr = normalizeString(value);
66
67
  var basicRegExp = loose ? looseChineseRegExp : chineseRegExp;
67
68
  var extendRegExp = loose ? looseChineseExtendRegExp : chineseExtendRegExp;
@@ -71,5 +72,4 @@ function isChinese(value) {
71
72
  var reg = new RegExp(resultRegExp, flag);
72
73
  return reg.test(valueStr);
73
74
  }
74
-
75
75
  export default isChinese;
package/esm/isEmail.js CHANGED
@@ -1,6 +1,8 @@
1
- import normalizeString from './normalizeString'; // 邮箱
1
+ import normalizeString from './normalizeString';
2
2
 
3
+ // 邮箱
3
4
  var reg = /^[\da-z]+([\-\.\_]?[\da-z]+)*@[\da-z]+([\-\.]?[\da-z]+)*(\.[a-z]{2,})+$/i;
5
+
4
6
  /**
5
7
  * 检测值是否为Email
6
8
  *
@@ -15,10 +17,8 @@ var reg = /^[\da-z]+([\-\.\_]?[\da-z]+)*@[\da-z]+([\-\.]?[\da-z]+)*(\.[a-z]{2,})
15
17
  * isEmail('123@'); // false
16
18
  *
17
19
  */
18
-
19
20
  function isEmail(value) {
20
21
  var valueStr = normalizeString(value);
21
22
  return reg.test(valueStr);
22
23
  }
23
-
24
24
  export default isEmail;
package/esm/isHMCard.js CHANGED
@@ -1,6 +1,8 @@
1
- import normalizeString from './normalizeString'; // 港澳居民来往内地通行证正则
1
+ import normalizeString from './normalizeString';
2
2
 
3
+ // 港澳居民来往内地通行证正则
3
4
  var regHMCard = /^[hm]{1}([0-9]{10}|[0-9]{8})$/i;
5
+
4
6
  /**
5
7
  * 检测值是否为港澳居民来往内地通行证,俗称回乡证或回乡卡。
6
8
  *
@@ -23,10 +25,8 @@ var regHMCard = /^[hm]{1}([0-9]{10}|[0-9]{8})$/i;
23
25
  * isHMCard('m32031177'); // true
24
26
  * isHMCard('M32031177'); // true
25
27
  */
26
-
27
28
  function isHMCard(value) {
28
29
  var valueStr = normalizeString(value);
29
30
  return regHMCard.test(valueStr);
30
31
  }
31
-
32
32
  export default isHMCard;
package/esm/isIPv4.js CHANGED
@@ -1,6 +1,8 @@
1
- import normalizeString from './normalizeString'; // ipv4正则
1
+ import normalizeString from './normalizeString';
2
2
 
3
+ // ipv4正则
3
4
  var reg = /^((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
5
+
4
6
  /**
5
7
  * 检测值是否为ipv4
6
8
  *
@@ -17,10 +19,8 @@ var reg = /^((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d{1,2}|1\d\d|2[0-4]\d|25[0-
17
19
  * isIPv4('0.0'); // false
18
20
  *
19
21
  */
20
-
21
22
  function isIPv4(value) {
22
23
  var valueStr = normalizeString(value);
23
24
  return reg.test(valueStr);
24
25
  }
25
-
26
26
  export default isIPv4;
package/esm/isIPv6.js CHANGED
@@ -1,6 +1,8 @@
1
- import normalizeString from './normalizeString'; // ipv6正则
1
+ import normalizeString from './normalizeString';
2
2
 
3
+ // ipv6正则
3
4
  var reg = /^((([0-9A-F]{1,4}:){7}([0-9A-F]{1,4}|:))|(([0-9A-F]{1,4}:){6}(:[0-9A-F]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3})|:))|(([0-9A-F]{1,4}:){5}(((:[0-9A-F]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3})|:))|(([0-9A-F]{1,4}:){4}(((:[0-9A-F]{1,4}){1,3})|((:[0-9A-F]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3}))|:))|(([0-9A-F]{1,4}:){3}(((:[0-9A-F]{1,4}){1,4})|((:[0-9A-F]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3}))|:))|(([0-9A-F]{1,4}:){2}(((:[0-9A-F]{1,4}){1,5})|((:[0-9A-F]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3}))|:))|(([0-9A-F]{1,4}:){1}(((:[0-9A-F]{1,4}){1,6})|((:[0-9A-F]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3}))|:))|(:(((:[0-9A-F]{1,4}){1,7})|((:[0-9A-F]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3}))|:)))(%.+)?$/i;
5
+
4
6
  /**
5
7
  * 检测值是否为ipv6
6
8
  *
@@ -31,10 +33,8 @@ var reg = /^((([0-9A-F]{1,4}:){7}([0-9A-F]{1,4}|:))|(([0-9A-F]{1,4}:){6}(:[0-9A-
31
33
  * isIPv6('192.168.1.1'); // false
32
34
  *
33
35
  */
34
-
35
36
  function isIPv6(value) {
36
37
  var valueStr = normalizeString(value);
37
38
  return reg.test(valueStr);
38
39
  }
39
-
40
40
  export default isIPv6;
package/esm/isIdCard.js CHANGED
@@ -1,37 +1,36 @@
1
- import normalizeString from './normalizeString'; // 身份证号正则
1
+ import normalizeString from './normalizeString';
2
2
 
3
+ // 身份证号正则
3
4
  var regIdCard = /^[1-9]\d{5}(19|20)?\d{2}((0[1-9])|(1[012]))(([0-2][1-9])|10|20|30|31)\d{3}(\d|X)?$/i;
5
+
4
6
  /**
5
7
  * 校验码计算
6
8
  *
7
9
  * @private
8
- * @see 参考 {@link https://zh.wikipedia.org/wiki/中华人民共和国公民身份号码|中华人民共和国公民身份号码}
9
- * @see 参考 {@link https://baike.baidu.com/item/居民身份证号码|居民身份证号码}
10
10
  * @param {string} id 身份证号码
11
11
  * @returns {boolean} 校验码是否正确
12
12
  */
13
-
14
13
  function check(id) {
15
14
  var index, sum, num;
16
-
17
15
  for (sum = index = 0; index < 17; index++) {
18
16
  sum += Math.pow(2, 17 - index) % 11 * Number(id[index]);
19
17
  }
20
-
21
18
  num = (12 - sum % 11) % 11;
22
-
23
19
  if (num < 10) {
24
20
  return num === Number(id[17]);
25
21
  } else {
26
22
  return id[17].toUpperCase() === 'X';
27
23
  }
28
24
  }
25
+
29
26
  /**
30
27
  * 检测值是否为18位身份证号码。<br/>宽松模式下,支持15位身份证号码
31
28
  *
32
29
  * @static
33
30
  * @alias module:Validator.isIdCard
34
31
  * @since 1.1.0
32
+ * @see 参考 {@link https://zh.wikipedia.org/wiki/中华人民共和国公民身份号码|中华人民共和国公民身份号码}
33
+ * @see 参考 {@link https://baike.baidu.com/item/居民身份证号码|居民身份证号码}
35
34
  * @param {*} value 要检测的值
36
35
  * @param {Object} [options] 配置项
37
36
  * @param {boolean} [options.loose=false] 宽松模式,支持15位身份证号码
@@ -52,29 +51,22 @@ function check(id) {
52
51
  * isIdCard('320311770706001', { loose: true }); // true
53
52
  *
54
53
  */
55
-
56
-
57
54
  function isIdCard(value) {
58
55
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
59
56
  var _options$loose = options.loose,
60
- loose = _options$loose === void 0 ? false : _options$loose,
61
- _options$checkCode = options.checkCode,
62
- checkCode = _options$checkCode === void 0 ? true : _options$checkCode;
57
+ loose = _options$loose === void 0 ? false : _options$loose,
58
+ _options$checkCode = options.checkCode,
59
+ checkCode = _options$checkCode === void 0 ? true : _options$checkCode;
63
60
  var valueStr = normalizeString(value);
64
-
65
61
  if (valueStr.length === 15 && loose) {
66
62
  return regIdCard.test(valueStr);
67
63
  }
68
-
69
64
  if (valueStr.length === 18 && regIdCard.test(valueStr)) {
70
65
  if (checkCode) {
71
66
  return check(valueStr);
72
67
  }
73
-
74
68
  return true;
75
69
  }
76
-
77
70
  return false;
78
71
  }
79
-
80
72
  export default isIdCard;
package/esm/isMobile.js CHANGED
@@ -1,6 +1,8 @@
1
- import normalizeString from './normalizeString'; // 手机号码 11位数字,以1开头,第二位是3456789其中一个,后面再加9个数字
1
+ import normalizeString from './normalizeString';
2
2
 
3
+ // 手机号码 11位数字,以1开头,第二位是3456789其中一个,后面再加9个数字
3
4
  var reg = /^1[3456789]\d{9}$/;
5
+
4
6
  /**
5
7
  * 检测值是否为手机号码
6
8
  *
@@ -15,10 +17,8 @@ var reg = /^1[3456789]\d{9}$/;
15
17
  * isMobile('13000'); // false
16
18
  *
17
19
  */
18
-
19
20
  function isMobile(value) {
20
21
  var valueStr = normalizeString(value);
21
22
  return reg.test(valueStr);
22
23
  }
23
-
24
24
  export default isMobile;
package/esm/isPassport.js CHANGED
@@ -1,6 +1,8 @@
1
- import normalizeString from './normalizeString'; // 护照号 9位,包括首字母和数字;支持 普通护照(E*)、外交护照(DE)、公务护照(SE)、公务普通护照(PE)、香港特区护照(K/KJ/H*)、澳门特区护照(MA/MB/M*)
1
+ import normalizeString from './normalizeString';
2
2
 
3
+ // 护照号 9位,包括首字母和数字;支持 普通护照(E*)、外交护照(DE)、公务护照(SE)、公务普通护照(PE)、香港特区护照(K/KJ/H*)、澳门特区护照(MA/MB/M*)
3
4
  var reg = /^((e[\da-z])|(de)|(se)|(pe)|([khm][\da-z]))[\da-z]{7}$/i;
5
+
4
6
  /**
5
7
  * 检测值是否为护照号
6
8
  * 支持普通护照(E*)、外交护照(DE)、公务护照(SE)、公务普通护照(PE)、香港特区护照(K/KJ/H*)、澳门特区护照(MA/MB/M*),注意不区分大小写
@@ -17,10 +19,8 @@ var reg = /^((e[\da-z])|(de)|(se)|(pe)|([khm][\da-z]))[\da-z]{7}$/i;
17
19
  * isPassport('abc'); // false
18
20
  *
19
21
  */
20
-
21
22
  function isPassport(value) {
22
23
  var valueStr = normalizeString(value);
23
24
  return reg.test(valueStr);
24
25
  }
25
-
26
26
  export default isPassport;
package/esm/isPassword.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import validatePassword from './validatePassword';
2
+
2
3
  /**
3
4
  * 检测值是否符合密码强度
4
5
  * <p><strong>注意:该校验只校验是否存在不同字符(大小写字母、数字、特殊符号),不判断长度。</strong></p>
@@ -32,20 +33,18 @@ import validatePassword from './validatePassword';
32
33
  * isPassword(' _Aa12345678', {level: 3, ignoreCase: true}); // false
33
34
  *
34
35
  */
35
-
36
36
  function isPassword(value) {
37
37
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
38
38
  var _options$level = options.level,
39
- level = _options$level === void 0 ? 2 : _options$level,
40
- _options$ignoreCase = options.ignoreCase,
41
- ignoreCase = _options$ignoreCase === void 0 ? false : _options$ignoreCase,
42
- _options$special = options.special,
43
- special = _options$special === void 0 ? '\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E' : _options$special;
39
+ level = _options$level === void 0 ? 2 : _options$level,
40
+ _options$ignoreCase = options.ignoreCase,
41
+ ignoreCase = _options$ignoreCase === void 0 ? false : _options$ignoreCase,
42
+ _options$special = options.special,
43
+ special = _options$special === void 0 ? '\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E' : _options$special;
44
44
  return validatePassword(value, {
45
45
  level: level,
46
46
  ignoreCase: ignoreCase,
47
47
  special: special
48
48
  }).validated;
49
49
  }
50
-
51
50
  export default isPassword;
package/esm/isPostcode.js CHANGED
@@ -1,6 +1,8 @@
1
- import normalizeString from './normalizeString'; // 邮政编码
1
+ import normalizeString from './normalizeString';
2
2
 
3
+ // 邮政编码
3
4
  var reg = /^\d{6}$/;
5
+
4
6
  /**
5
7
  * 检测值是否为邮政编码,6位数字
6
8
  *
@@ -15,10 +17,8 @@ var reg = /^\d{6}$/;
15
17
  * isPostcode('123'); // false
16
18
  *
17
19
  */
18
-
19
20
  function isPostcode(value) {
20
21
  var valueStr = normalizeString(value);
21
22
  return reg.test(valueStr);
22
23
  }
23
-
24
24
  export default isPostcode;
@@ -1,5 +1,4 @@
1
1
  import _typeof from "@babel/runtime/helpers/typeof";
2
-
3
2
  /**
4
3
  * 检测值是否类似Promise对象
5
4
  *
@@ -18,5 +17,4 @@ import _typeof from "@babel/runtime/helpers/typeof";
18
17
  function isPromiseLike(obj) {
19
18
  return obj !== null && (_typeof(obj) === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
20
19
  }
21
-
22
20
  export default isPromiseLike;
package/esm/isQQ.js CHANGED
@@ -1,6 +1,8 @@
1
- import normalizeString from './normalizeString'; // QQ号正则
1
+ import normalizeString from './normalizeString';
2
2
 
3
+ // QQ号正则
3
4
  var reg = /^[1-9]\d{4,10}$/;
5
+
4
6
  /**
5
7
  * 检测值是否为QQ号,非0开头,5至11位数字
6
8
  *
@@ -15,10 +17,8 @@ var reg = /^[1-9]\d{4,10}$/;
15
17
  * isQQ('123'); // false
16
18
  *
17
19
  */
18
-
19
20
  function isQQ(value) {
20
21
  var valueStr = normalizeString(value);
21
22
  return reg.test(valueStr);
22
23
  }
23
-
24
24
  export default isQQ;
@@ -1,8 +1,11 @@
1
- import normalizeString from './normalizeString'; // 基础规则,由18位数字和大写字母组成,不使用I、O、Z、S、V。
1
+ import normalizeString from './normalizeString';
2
2
 
3
- var baseReg = /^[\dA-HJ-NPQRTUWXY]{2}\d{6}[\dA-HJ-NPQRTUWXY]{10}$/; // 基础字符组成
3
+ // 基础规则,由18位数字和大写字母组成,不使用I、O、Z、S、V。
4
+ var baseReg = /^[\dA-HJ-NPQRTUWXY]{2}\d{6}[\dA-HJ-NPQRTUWXY]{10}$/;
4
5
 
6
+ // 基础字符组成
5
7
  var baseCodeArr = '0123456789ABCDEFGHJKLMNPQRTUWXY'.split('');
8
+
6
9
  /**
7
10
  * 计算校验码
8
11
  *
@@ -11,31 +14,31 @@ var baseCodeArr = '0123456789ABCDEFGHJKLMNPQRTUWXY'.split('');
11
14
  * @param {string} preCode 统一代码前17位
12
15
  * @returns {string} 校验码
13
16
  */
14
-
15
17
  function sumCheckCode(preCode) {
16
- var total = 0; // 计算字符位置对应序号和加权因子的乘积,总和
18
+ var total = 0;
17
19
 
20
+ // 计算字符位置对应序号和加权因子的乘积,总和
18
21
  var _loop = function _loop(i) {
19
22
  // 字符位置对应的基础编码序号
20
23
  var index = baseCodeArr.findIndex(function (item) {
21
24
  return item === preCode[i];
22
- }); // 加权因子
23
-
24
- var wf = Math.pow(3, i) % 31; // 计算序号和加权因子的乘积,并计算级数之和
25
-
25
+ });
26
+ // 加权因子
27
+ var wf = Math.pow(3, i) % 31;
28
+ // 计算序号和加权因子的乘积,并计算级数之和
26
29
  total += index * wf;
27
30
  };
28
-
29
31
  for (var i = 0; i < 17; i++) {
30
32
  _loop(i);
31
- } // 计算整数求余函数MOD
32
-
33
-
34
- var remainder = total % 31; // 校验码字符值序号
33
+ }
35
34
 
35
+ // 计算整数求余函数MOD
36
+ var remainder = total % 31;
37
+ // 校验码字符值序号
36
38
  var checkCodeIndex = remainder !== 0 ? 31 - remainder : 0;
37
39
  return baseCodeArr[checkCodeIndex];
38
40
  }
41
+
39
42
  /**
40
43
  * 检测值是否为统一社会信用代码,也叫三证合一组织代码。由18位数字和大写字母组成,不使用I、O、Z、S、V。
41
44
  *
@@ -58,31 +61,29 @@ function sumCheckCode(preCode) {
58
61
  * isSocialCreditCode('91350100M000100Y', { checkCode: false }); // false
59
62
  *
60
63
  */
61
-
62
-
63
64
  function isSocialCreditCode(value) {
64
65
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
65
- var valueStr = normalizeString(value); // @ts-ignore
66
+ var valueStr = normalizeString(value);
67
+ // @ts-ignore
66
68
  // TODO 下个版本废弃 loose
67
-
68
69
  var _options$loose = options.loose,
69
- loose = _options$loose === void 0 ? false : _options$loose,
70
- _options$checkCode = options.checkCode,
71
- cc = _options$checkCode === void 0 ? true : _options$checkCode;
70
+ loose = _options$loose === void 0 ? false : _options$loose,
71
+ _options$checkCode = options.checkCode,
72
+ cc = _options$checkCode === void 0 ? true : _options$checkCode;
72
73
  var needCheckCode = !loose && cc;
73
- var passBaseRule = baseReg.test(valueStr); // 宽松模式 或 基础规则不通过直接返回
74
+ var passBaseRule = baseReg.test(valueStr);
74
75
 
76
+ // 宽松模式 或 基础规则不通过直接返回
75
77
  if (!needCheckCode || !passBaseRule) {
76
78
  return passBaseRule;
77
- } // 前17位
78
-
79
-
80
- var preCode = valueStr.substring(0, 17); // 校验码
81
-
82
- var lastCode = valueStr.substring(valueStr.length - 1); // 计算校验码
79
+ }
83
80
 
81
+ // 前17位
82
+ var preCode = valueStr.substring(0, 17);
83
+ // 校验码
84
+ var lastCode = valueStr.substring(valueStr.length - 1);
85
+ // 计算校验码
84
86
  var checkCode = sumCheckCode(preCode);
85
87
  return lastCode === checkCode;
86
88
  }
87
-
88
89
  export default isSocialCreditCode;
@@ -1,5 +1,6 @@
1
1
  import normalizeString from './normalizeString';
2
2
  var reg = /^[A-Z]{6}[A-Z\d]{2}(?:[A-Z\d]{3})?$/;
3
+
3
4
  /**
4
5
  * 检测值是否为 Swift Code。8位或11位,前6位为大写字母,7-8位为大写字母或数字,9-11位为可选的大写字母或数字。
5
6
  *
@@ -20,10 +21,8 @@ var reg = /^[A-Z]{6}[A-Z\d]{2}(?:[A-Z\d]{3})?$/;
20
21
  * isSwiftCode('ICBKCNBJBJM'); // true
21
22
  *
22
23
  */
23
-
24
24
  function isSwiftCode(value) {
25
25
  var valueStr = normalizeString(value);
26
26
  return reg.test(valueStr);
27
27
  }
28
-
29
28
  export default isSwiftCode;
package/esm/isTWCard.js CHANGED
@@ -1,8 +1,11 @@
1
- import normalizeString from './normalizeString'; // 台湾居民来往大陆通行证正则
1
+ import normalizeString from './normalizeString';
2
2
 
3
- var regTWCard = /^\d{8}$/i; // 一次性短期台胞证
3
+ // 台湾居民来往大陆通行证正则
4
+ var regTWCard = /^\d{8}$/i;
4
5
 
6
+ // 一次性短期台胞证
5
7
  var singleRegTWCard = /^[\da-z]{10,12}$/i;
8
+
6
9
  /**
7
10
  * 检测值是否为台湾居民来往大陆通行证,俗称台胞证。
8
11
  *
@@ -25,18 +28,14 @@ var singleRegTWCard = /^[\da-z]{10,12}$/i;
25
28
  * // 宽松模式,支持一次性短期通行证
26
29
  * isTWCard('F290299977', { loose: true }); // true
27
30
  */
28
-
29
31
  function isTWCard(value) {
30
32
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
31
33
  var _options$loose = options.loose,
32
- loose = _options$loose === void 0 ? false : _options$loose;
34
+ loose = _options$loose === void 0 ? false : _options$loose;
33
35
  var valueStr = normalizeString(value);
34
-
35
36
  if (regTWCard.test(valueStr)) {
36
37
  return true;
37
38
  }
38
-
39
39
  return loose ? singleRegTWCard.test(valueStr) : false;
40
40
  }
41
-
42
41
  export default isTWCard;
@@ -1,6 +1,8 @@
1
- import normalizeString from './normalizeString'; // 固定电话 支持区号和分机号 3~4位区号,以0开头;7~8位直播号,以2~9开头;1~6位分机号
1
+ import normalizeString from './normalizeString';
2
2
 
3
+ // 固定电话 支持区号和分机号 3~4位区号,以0开头;7~8位直播号,以2~9开头;1~6位分机号
3
4
  var reg = /^(0\d{2,3}\-)?([2-9]\d{6,7})(\-\d{1,6})?$/;
5
+
4
6
  /**
5
7
  * 检测值是否为固定电话
6
8
  *
@@ -21,10 +23,8 @@ var reg = /^(0\d{2,3}\-)?([2-9]\d{6,7})(\-\d{1,6})?$/;
21
23
  * isTelephone('021-22033212-123'); // true
22
24
  *
23
25
  */
24
-
25
26
  function isTelephone(value) {
26
27
  var valueStr = normalizeString(value);
27
28
  return reg.test(valueStr);
28
29
  }
29
-
30
30
  export default isTelephone;