@cloudcome/utils-core 1.19.1 → 1.20.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 (161) hide show
  1. package/README.md +72 -73
  2. package/dist/array.cjs +181 -125
  3. package/dist/array.cjs.map +1 -1
  4. package/dist/array.mjs +181 -133
  5. package/dist/array.mjs.map +1 -1
  6. package/dist/async.cjs +181 -171
  7. package/dist/async.cjs.map +1 -1
  8. package/dist/async.mjs +181 -174
  9. package/dist/async.mjs.map +1 -1
  10. package/dist/base64.cjs +16 -12
  11. package/dist/base64.cjs.map +1 -1
  12. package/dist/base64.mjs +17 -14
  13. package/dist/base64.mjs.map +1 -1
  14. package/dist/cache.cjs +79 -67
  15. package/dist/cache.cjs.map +1 -1
  16. package/dist/cache.d.ts +3 -3
  17. package/dist/cache.mjs +80 -71
  18. package/dist/cache.mjs.map +1 -1
  19. package/dist/color.cjs +478 -167
  20. package/dist/color.cjs.map +1 -1
  21. package/dist/color.d.ts +3 -3
  22. package/dist/color.mjs +480 -197
  23. package/dist/color.mjs.map +1 -1
  24. package/dist/crypto.cjs +474 -687
  25. package/dist/crypto.cjs.map +1 -1
  26. package/dist/crypto.mjs +476 -693
  27. package/dist/crypto.mjs.map +1 -1
  28. package/dist/date.cjs +972 -161
  29. package/dist/date.cjs.map +1 -1
  30. package/dist/date.d.ts +2 -2
  31. package/dist/date.mjs +962 -191
  32. package/dist/date.mjs.map +1 -1
  33. package/dist/dict.cjs +90 -52
  34. package/dist/dict.cjs.map +1 -1
  35. package/dist/dict.d.ts +1 -1
  36. package/dist/dict.mjs +91 -54
  37. package/dist/dict.mjs.map +1 -1
  38. package/dist/easing.cjs +104 -103
  39. package/dist/easing.cjs.map +1 -1
  40. package/dist/easing.mjs +105 -133
  41. package/dist/easing.mjs.map +1 -1
  42. package/dist/emitter.cjs +101 -96
  43. package/dist/emitter.cjs.map +1 -1
  44. package/dist/emitter.mjs +101 -97
  45. package/dist/emitter.mjs.map +1 -1
  46. package/dist/env.cjs +43 -9
  47. package/dist/env.cjs.map +1 -1
  48. package/dist/env.d.ts +1 -1
  49. package/dist/env.mjs +43 -15
  50. package/dist/env.mjs.map +1 -1
  51. package/dist/error.cjs +26 -5
  52. package/dist/error.cjs.map +1 -1
  53. package/dist/error.mjs +26 -7
  54. package/dist/error.mjs.map +1 -1
  55. package/dist/exception.cjs +38 -20
  56. package/dist/exception.cjs.map +1 -1
  57. package/dist/exception.d.ts +5 -5
  58. package/dist/exception.mjs +38 -21
  59. package/dist/exception.mjs.map +1 -1
  60. package/dist/function.cjs +128 -68
  61. package/dist/function.cjs.map +1 -1
  62. package/dist/function.mjs +128 -72
  63. package/dist/function.mjs.map +1 -1
  64. package/dist/index.cjs +8 -3
  65. package/dist/index.cjs.map +1 -1
  66. package/dist/index.mjs +9 -5
  67. package/dist/index.mjs.map +1 -1
  68. package/dist/number.cjs +10 -14
  69. package/dist/number.mjs +2 -15
  70. package/dist/object/get-set.d.ts +2 -2
  71. package/dist/object/merge.d.ts +2 -2
  72. package/dist/object.cjs +369 -106
  73. package/dist/object.cjs.map +1 -1
  74. package/dist/object.mjs +366 -115
  75. package/dist/object.mjs.map +1 -1
  76. package/dist/path.cjs +144 -55
  77. package/dist/path.cjs.map +1 -1
  78. package/dist/path.mjs +144 -62
  79. package/dist/path.mjs.map +1 -1
  80. package/dist/promise.cjs +84 -43
  81. package/dist/promise.cjs.map +1 -1
  82. package/dist/promise.mjs +85 -50
  83. package/dist/promise.mjs.map +1 -1
  84. package/dist/qs.cjs +63 -39
  85. package/dist/qs.cjs.map +1 -1
  86. package/dist/qs.mjs +64 -42
  87. package/dist/qs.mjs.map +1 -1
  88. package/dist/regexp.cjs +118 -35
  89. package/dist/regexp.cjs.map +1 -1
  90. package/dist/regexp.mjs +119 -46
  91. package/dist/regexp.mjs.map +1 -1
  92. package/dist/string.cjs +12 -15
  93. package/dist/string.mjs +2 -16
  94. package/dist/string2.cjs +378 -142
  95. package/dist/string2.cjs.map +1 -1
  96. package/dist/string2.mjs +259 -143
  97. package/dist/string2.mjs.map +1 -1
  98. package/dist/time.cjs +136 -59
  99. package/dist/time.cjs.map +1 -1
  100. package/dist/time.mjs +136 -65
  101. package/dist/time.mjs.map +1 -1
  102. package/dist/timer.cjs +122 -112
  103. package/dist/timer.cjs.map +1 -1
  104. package/dist/timer.mjs +123 -115
  105. package/dist/timer.mjs.map +1 -1
  106. package/dist/tree.cjs +207 -112
  107. package/dist/tree.cjs.map +1 -1
  108. package/dist/tree.mjs +207 -116
  109. package/dist/tree.mjs.map +1 -1
  110. package/dist/try/curry.d.ts +1 -1
  111. package/dist/try.cjs +36 -37
  112. package/dist/try.cjs.map +1 -1
  113. package/dist/try.mjs +35 -37
  114. package/dist/try.mjs.map +1 -1
  115. package/dist/type.cjs +126 -24
  116. package/dist/type.cjs.map +1 -1
  117. package/dist/type.d.ts +2 -2
  118. package/dist/type.mjs +128 -45
  119. package/dist/type.mjs.map +1 -1
  120. package/dist/types.cjs +0 -2
  121. package/dist/types.d.ts +1 -1
  122. package/dist/types.mjs +0 -2
  123. package/dist/unique.cjs +41 -38
  124. package/dist/unique.cjs.map +1 -1
  125. package/dist/unique.mjs +42 -41
  126. package/dist/unique.mjs.map +1 -1
  127. package/dist/url.cjs +39 -30
  128. package/dist/url.cjs.map +1 -1
  129. package/dist/url.mjs +40 -33
  130. package/dist/url.mjs.map +1 -1
  131. package/dist/version.cjs +51 -33
  132. package/dist/version.cjs.map +1 -1
  133. package/dist/version.mjs +51 -35
  134. package/dist/version.mjs.map +1 -1
  135. package/package.json +109 -110
  136. package/dist/const.cjs +0 -14
  137. package/dist/const.cjs.map +0 -1
  138. package/dist/const.mjs +0 -15
  139. package/dist/const.mjs.map +0 -1
  140. package/dist/core.cjs +0 -362
  141. package/dist/core.cjs.map +0 -1
  142. package/dist/core.mjs +0 -363
  143. package/dist/core.mjs.map +0 -1
  144. package/dist/crypto/md5.d.mts +0 -1
  145. package/dist/crypto/sha1.d.mts +0 -1
  146. package/dist/crypto/sha256.d.mts +0 -1
  147. package/dist/crypto/sha512.d.mts +0 -1
  148. package/dist/each.cjs +0 -18
  149. package/dist/each.cjs.map +0 -1
  150. package/dist/each.mjs +0 -19
  151. package/dist/each.mjs.map +0 -1
  152. package/dist/merge.cjs +0 -87
  153. package/dist/merge.cjs.map +0 -1
  154. package/dist/merge.mjs +0 -88
  155. package/dist/merge.mjs.map +0 -1
  156. package/dist/number.cjs.map +0 -1
  157. package/dist/number.mjs.map +0 -1
  158. package/dist/string.cjs.map +0 -1
  159. package/dist/string.mjs.map +0 -1
  160. package/dist/types.cjs.map +0 -1
  161. package/dist/types.mjs.map +0 -1
package/dist/regexp.cjs CHANGED
@@ -1,58 +1,140 @@
1
- "use strict";
2
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const specialRE = /[.*+?^=!:${}()|[\]/\\-]/g;
2
+ //#region src/regexp.ts
3
+ var specialRE = /[.*+?^=!:${}()|[\]/\\-]/g;
4
+ /**
5
+ * 编码处理正则表达式
6
+ * @example
7
+ * ```js
8
+ * reEscape('/$')
9
+ * // => '\\/\\$'
10
+ * ```
11
+ * @param {string} string
12
+ * @returns {string}
13
+ */
4
14
  function regexpEscape(string) {
5
- return string.replace(specialRE, "\\$&");
15
+ return string.replace(specialRE, "\\$&");
6
16
  }
7
- const EMAIL_RE = /^\w+[-+.\w]*@([a-z\d-]+\.)+[a-z]{2,5}$/i;
17
+ var EMAIL_RE = /^\w+[-+.\w]*@([a-z\d-]+\.)+[a-z]{2,5}$/i;
18
+ /**
19
+ * 判断字符串是否为邮箱格式,不对邮箱真实性做验证,如域名是否正确等
20
+ * @param {string} value
21
+ * @returns {boolean}
22
+ */
8
23
  function isEmail(value) {
9
- return EMAIL_RE.test(value);
24
+ return EMAIL_RE.test(value);
10
25
  }
11
- const PHONE_RE = /^1\d{10}$/;
26
+ var PHONE_RE = /^1\d{10}$/;
27
+ /**
28
+ * 判断字符串是否为宽松手机格式,即首位为 1 的 11 位数字都属于手机号
29
+ * @param {string} value
30
+ * @returns {boolean}
31
+ */
12
32
  function isPhone(value) {
13
- return PHONE_RE.test(value);
33
+ return PHONE_RE.test(value);
14
34
  }
15
- const IDNO_RE = /^(1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5]|7[1]|8[1-2]|9[1])\d{4}(18|19|20)\d{2}[01]\d[0123]\d{4}[\dxX]$/;
35
+ var IDNO_RE = /^(1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5]|7[1]|8[1-2]|9[1])\d{4}(18|19|20)\d{2}[01]\d[0123]\d{4}[\dxX]$/;
36
+ /**
37
+ * 判断字符串是否为身份证号码格式
38
+ * @param {string} value
39
+ * @returns {boolean}
40
+ */
16
41
  function isIDNo(value) {
17
- const isSameFormat = IDNO_RE.test(value);
18
- if (!isSameFormat) return false;
19
- const year = Number(value.slice(6, 10));
20
- const month = Number(value.slice(10, 12));
21
- const date = Number(value.slice(12, 14));
22
- const d = new Date(year, month - 1, date);
23
- const isSameDate = d.getFullYear() === year && d.getMonth() + 1 === month && d.getDate() === date;
24
- if (!isSameDate) return false;
25
- const coefficientList = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
26
- const residueList = ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"];
27
- let sum = 0;
28
- for (let start = 0; start < 17; start++) {
29
- sum += Number(value.slice(start, start + 1)) * coefficientList[start];
30
- }
31
- return residueList[sum % 11] === value.slice(-1);
42
+ if (!IDNO_RE.test(value)) return false;
43
+ const year = Number(value.slice(6, 10));
44
+ const month = Number(value.slice(10, 12));
45
+ const date = Number(value.slice(12, 14));
46
+ const d = new Date(year, month - 1, date);
47
+ if (!(d.getFullYear() === year && d.getMonth() + 1 === month && d.getDate() === date)) return false;
48
+ const coefficientList = [
49
+ 7,
50
+ 9,
51
+ 10,
52
+ 5,
53
+ 8,
54
+ 4,
55
+ 2,
56
+ 1,
57
+ 6,
58
+ 3,
59
+ 7,
60
+ 9,
61
+ 10,
62
+ 5,
63
+ 8,
64
+ 4,
65
+ 2
66
+ ];
67
+ const residueList = [
68
+ "1",
69
+ "0",
70
+ "X",
71
+ "9",
72
+ "8",
73
+ "7",
74
+ "6",
75
+ "5",
76
+ "4",
77
+ "3",
78
+ "2"
79
+ ];
80
+ let sum = 0;
81
+ for (let start = 0; start < 17; start++) sum += Number(value.slice(start, start + 1)) * coefficientList[start];
82
+ return residueList[sum % 11] === value.slice(-1);
32
83
  }
33
- const URL_RE = /^https?:\/\//i;
84
+ var URL_RE = /^https?:\/\//i;
85
+ /**
86
+ * 判断字符串是否为 url 格式,仅支持 http 协议,支持域名或者 ipV4
87
+ * @param {string} value
88
+ * @returns {boolean}
89
+ */
34
90
  function isURL(value) {
35
- return URL_RE.test(value);
91
+ return URL_RE.test(value);
36
92
  }
37
- const IPV4_RE = /^(?:(?:\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$/;
93
+ var IPV4_RE = /^(?:(?:\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$/;
94
+ /**
95
+ * 判断字符串是否为 IPV4 格式,不对 ip 真实性做验证
96
+ * @param {string} value
97
+ * @returns {boolean}
98
+ */
38
99
  function isIPV4(value) {
39
- return IPV4_RE.test(value);
100
+ return IPV4_RE.test(value);
40
101
  }
41
- const INTEGER_RE = /^(-?[1-9]\d*|0)$/;
102
+ var INTEGER_RE = /^(-?[1-9]\d*|0)$/;
103
+ /**
104
+ * 判断字符串是否为整数(自然数),即 ...,-3,-2,-1,0,1,2,3,...
105
+ * @param {string} value
106
+ * @returns {boolean}
107
+ */
42
108
  function isInteger(value) {
43
- return INTEGER_RE.test(value);
109
+ return INTEGER_RE.test(value);
44
110
  }
45
- const FLOAT_RE = /^-?([1-9]\d*|0)\.\d+$/;
111
+ var FLOAT_RE = /^-?([1-9]\d*|0)\.\d+$/;
112
+ /**
113
+ * 判断字符串是否为浮点数,即必须有小数点的有理数
114
+ * @param {string} value
115
+ * @returns {boolean}
116
+ */
46
117
  function isFloat(value) {
47
- return FLOAT_RE.test(value);
118
+ return FLOAT_RE.test(value);
48
119
  }
120
+ /**
121
+ * 判断字符串是否为正确数值,包括整数和浮点数
122
+ * @param {string} value
123
+ * @returns {boolean}
124
+ */
49
125
  function isNumerical(value) {
50
- return isInteger(value) || isFloat(value);
126
+ return isInteger(value) || isFloat(value);
51
127
  }
52
- const DIGIT_RE = /^\d+$/;
128
+ var DIGIT_RE = /^\d+$/;
129
+ /**
130
+ * 判断字符串是否为数字,例如六位数字短信验证码(093031)
131
+ * @param {string} value
132
+ * @returns {boolean}
133
+ */
53
134
  function isDigit(value) {
54
- return DIGIT_RE.test(value);
135
+ return DIGIT_RE.test(value);
55
136
  }
137
+ //#endregion
56
138
  exports.isDigit = isDigit;
57
139
  exports.isEmail = isEmail;
58
140
  exports.isFloat = isFloat;
@@ -63,4 +145,5 @@ exports.isNumerical = isNumerical;
63
145
  exports.isPhone = isPhone;
64
146
  exports.isURL = isURL;
65
147
  exports.regexpEscape = regexpEscape;
66
- //# sourceMappingURL=regexp.cjs.map
148
+
149
+ //# sourceMappingURL=regexp.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"regexp.cjs","sources":["../src/regexp.ts"],"sourcesContent":["const specialRE = /[.*+?^=!:${}()|[\\]/\\\\-]/g;\n\n/**\n * 编码处理正则表达式\n * @example\n * ```js\n * reEscape('/$')\n * // => '\\\\/\\\\$'\n * ```\n * @param {string} string\n * @returns {string}\n */\nexport function regexpEscape(string: string): string {\n return string.replace(specialRE, '\\\\$&');\n}\n\n// 邮箱\nconst EMAIL_RE = /^\\w+[-+.\\w]*@([a-z\\d-]+\\.)+[a-z]{2,5}$/i;\n/**\n * 判断字符串是否为邮箱格式,不对邮箱真实性做验证,如域名是否正确等\n * @param {string} value\n * @returns {boolean}\n */\nexport function isEmail(value: string): boolean {\n return EMAIL_RE.test(value);\n}\n\n// 手机号码\nconst PHONE_RE = /^1\\d{10}$/;\n/**\n * 判断字符串是否为宽松手机格式,即首位为 1 的 11 位数字都属于手机号\n * @param {string} value\n * @returns {boolean}\n */\nexport function isPhone(value: string): boolean {\n return PHONE_RE.test(value);\n}\n\n// 身份证号码\n// http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/\n// [\"北京市\", \"天津市\", \"河北省\", \"山西省\", \"内蒙古自治区\",\n// \"辽宁省\", \"吉林省\", \"黑龙江省\",\n// \"上海市\", \"江苏省\", \"浙江省\", \"安徽省\", \"福建省\", \"江西省\", \"山东省\",\n// \"河南省\", \"湖北省\", \"湖南省\", \"广东省\", \"广西壮族自治区\", \"海南省\",\n// \"重庆市\", \"四川省\", \"贵州省\", \"云南省\", \"西藏自治区\",\n// \"陕西省\", \"甘肃省\", \"青海省\",\"宁夏回族自治区\", \"新疆维吾尔自治区\",\n// \"台湾省\",\n// \"香港特别行政区\", \"澳门特别行政区\"]\n// [\"11\", \"12\", \"13\", \"14\", \"15\",\n// \"21\", \"22\", \"23\",\n// \"31\", \"32\", \"33\", \"34\", \"35\", \"36\", \"37\",\n// \"41\", \"42\", \"43\", \"44\", \"45\", \"46\",\n// \"50\", \"51\", \"52\", \"53\", \"54\",\n// \"61\", \"62\", \"63\", \"64\", \"65\",\n// \"71\",\n// \"81\", \"82\"]\n// 91 国外\nconst IDNO_RE =\n /^(1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5]|7[1]|8[1-2]|9[1])\\d{4}(18|19|20)\\d{2}[01]\\d[0123]\\d{4}[\\dxX]$/;\n/**\n * 判断字符串是否为身份证号码格式\n * @param {string} value\n * @returns {boolean}\n */\nexport function isIDNo(value: string): boolean {\n const isSameFormat = IDNO_RE.test(value);\n\n if (!isSameFormat) return false;\n\n const year = Number(value.slice(6, 10));\n const month = Number(value.slice(10, 12));\n const date = Number(value.slice(12, 14));\n const d = new Date(year, month - 1, date);\n const isSameDate = d.getFullYear() === year && d.getMonth() + 1 === month && d.getDate() === date;\n\n if (!isSameDate) return false;\n\n // 将身份证号码前面的17位数分别乘以不同的系数;\n // 从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2\n // 将这17位数字和系数相乘的结果相加;\n // 用加出来和除以11,看余数是多少;\n // 余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字;\n // 其分别对应的最后一位身份证的号码为1-0-X-9-8-7-6-5-4-3-2\n // 通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。\n const coefficientList = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];\n const residueList = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];\n let sum = 0;\n\n for (let start = 0; start < 17; start++) {\n sum += Number(value.slice(start, start + 1)) * coefficientList[start];\n }\n\n return residueList[sum % 11] === value.slice(-1);\n}\n\n// url\nconst URL_RE = /^https?:\\/\\//i;\n/**\n * 判断字符串是否为 url 格式,仅支持 http 协议,支持域名或者 ipV4\n * @param {string} value\n * @returns {boolean}\n */\nexport function isURL(value: string): boolean {\n return URL_RE.test(value);\n}\n\n// ipv4\nconst IPV4_RE = /^(?:(?:\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(?:\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])$/;\n/**\n * 判断字符串是否为 IPV4 格式,不对 ip 真实性做验证\n * @param {string} value\n * @returns {boolean}\n */\nexport function isIPV4(value: string): boolean {\n return IPV4_RE.test(value);\n}\n\nconst INTEGER_RE = /^(-?[1-9]\\d*|0)$/;\n/**\n * 判断字符串是否为整数(自然数),即 ...,-3,-2,-1,0,1,2,3,...\n * @param {string} value\n * @returns {boolean}\n */\nexport function isInteger(value: string): boolean {\n return INTEGER_RE.test(value);\n}\n\nconst FLOAT_RE = /^-?([1-9]\\d*|0)\\.\\d+$/;\n/**\n * 判断字符串是否为浮点数,即必须有小数点的有理数\n * @param {string} value\n * @returns {boolean}\n */\nexport function isFloat(value: string): boolean {\n return FLOAT_RE.test(value);\n}\n\n/**\n * 判断字符串是否为正确数值,包括整数和浮点数\n * @param {string} value\n * @returns {boolean}\n */\nexport function isNumerical(value: string): boolean {\n return isInteger(value) || isFloat(value);\n}\n\nconst DIGIT_RE = /^\\d+$/;\n/**\n * 判断字符串是否为数字,例如六位数字短信验证码(093031)\n * @param {string} value\n * @returns {boolean}\n */\nexport function isDigit(value: string): boolean {\n return DIGIT_RE.test(value);\n}\n"],"names":[],"mappings":";;AAAA,MAAM,YAAY;AAYX,SAAS,aAAa,QAAwB;AAC5C,SAAA,OAAO,QAAQ,WAAW,MAAM;AACzC;AAGA,MAAM,WAAW;AAMV,SAAS,QAAQ,OAAwB;AACvC,SAAA,SAAS,KAAK,KAAK;AAC5B;AAGA,MAAM,WAAW;AAMV,SAAS,QAAQ,OAAwB;AACvC,SAAA,SAAS,KAAK,KAAK;AAC5B;AAqBA,MAAM,UACJ;AAMK,SAAS,OAAO,OAAwB;AACvC,QAAA,eAAe,QAAQ,KAAK,KAAK;AAEnC,MAAA,CAAC,aAAqB,QAAA;AAE1B,QAAM,OAAO,OAAO,MAAM,MAAM,GAAG,EAAE,CAAC;AACtC,QAAM,QAAQ,OAAO,MAAM,MAAM,IAAI,EAAE,CAAC;AACxC,QAAM,OAAO,OAAO,MAAM,MAAM,IAAI,EAAE,CAAC;AACvC,QAAM,IAAI,IAAI,KAAK,MAAM,QAAQ,GAAG,IAAI;AACxC,QAAM,aAAa,EAAE,YAAY,MAAM,QAAQ,EAAE,SAAS,IAAI,MAAM,SAAS,EAAE,QAAc,MAAA;AAEzF,MAAA,CAAC,WAAmB,QAAA;AASxB,QAAM,kBAAkB,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC;AAC5E,QAAM,cAAc,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAC1E,MAAI,MAAM;AAEV,WAAS,QAAQ,GAAG,QAAQ,IAAI,SAAS;AAChC,WAAA,OAAO,MAAM,MAAM,OAAO,QAAQ,CAAC,CAAC,IAAI,gBAAgB,KAAK;AAAA,EAAA;AAGtE,SAAO,YAAY,MAAM,EAAE,MAAM,MAAM,MAAM,EAAE;AACjD;AAGA,MAAM,SAAS;AAMR,SAAS,MAAM,OAAwB;AACrC,SAAA,OAAO,KAAK,KAAK;AAC1B;AAGA,MAAM,UAAU;AAMT,SAAS,OAAO,OAAwB;AACtC,SAAA,QAAQ,KAAK,KAAK;AAC3B;AAEA,MAAM,aAAa;AAMZ,SAAS,UAAU,OAAwB;AACzC,SAAA,WAAW,KAAK,KAAK;AAC9B;AAEA,MAAM,WAAW;AAMV,SAAS,QAAQ,OAAwB;AACvC,SAAA,SAAS,KAAK,KAAK;AAC5B;AAOO,SAAS,YAAY,OAAwB;AAClD,SAAO,UAAU,KAAK,KAAK,QAAQ,KAAK;AAC1C;AAEA,MAAM,WAAW;AAMV,SAAS,QAAQ,OAAwB;AACvC,SAAA,SAAS,KAAK,KAAK;AAC5B;;;;;;;;;;;"}
1
+ {"version":3,"file":"regexp.cjs","names":[],"sources":["../src/regexp.ts"],"sourcesContent":["const specialRE = /[.*+?^=!:${}()|[\\]/\\\\-]/g;\n\n/**\n * 编码处理正则表达式\n * @example\n * ```js\n * reEscape('/$')\n * // => '\\\\/\\\\$'\n * ```\n * @param {string} string\n * @returns {string}\n */\nexport function regexpEscape(string: string): string {\n return string.replace(specialRE, '\\\\$&');\n}\n\n// 邮箱\nconst EMAIL_RE = /^\\w+[-+.\\w]*@([a-z\\d-]+\\.)+[a-z]{2,5}$/i;\n/**\n * 判断字符串是否为邮箱格式,不对邮箱真实性做验证,如域名是否正确等\n * @param {string} value\n * @returns {boolean}\n */\nexport function isEmail(value: string): boolean {\n return EMAIL_RE.test(value);\n}\n\n// 手机号码\nconst PHONE_RE = /^1\\d{10}$/;\n/**\n * 判断字符串是否为宽松手机格式,即首位为 1 的 11 位数字都属于手机号\n * @param {string} value\n * @returns {boolean}\n */\nexport function isPhone(value: string): boolean {\n return PHONE_RE.test(value);\n}\n\n// 身份证号码\n// http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/\n// [\"北京市\", \"天津市\", \"河北省\", \"山西省\", \"内蒙古自治区\",\n// \"辽宁省\", \"吉林省\", \"黑龙江省\",\n// \"上海市\", \"江苏省\", \"浙江省\", \"安徽省\", \"福建省\", \"江西省\", \"山东省\",\n// \"河南省\", \"湖北省\", \"湖南省\", \"广东省\", \"广西壮族自治区\", \"海南省\",\n// \"重庆市\", \"四川省\", \"贵州省\", \"云南省\", \"西藏自治区\",\n// \"陕西省\", \"甘肃省\", \"青海省\",\"宁夏回族自治区\", \"新疆维吾尔自治区\",\n// \"台湾省\",\n// \"香港特别行政区\", \"澳门特别行政区\"]\n// [\"11\", \"12\", \"13\", \"14\", \"15\",\n// \"21\", \"22\", \"23\",\n// \"31\", \"32\", \"33\", \"34\", \"35\", \"36\", \"37\",\n// \"41\", \"42\", \"43\", \"44\", \"45\", \"46\",\n// \"50\", \"51\", \"52\", \"53\", \"54\",\n// \"61\", \"62\", \"63\", \"64\", \"65\",\n// \"71\",\n// \"81\", \"82\"]\n// 91 国外\nconst IDNO_RE =\n /^(1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5]|7[1]|8[1-2]|9[1])\\d{4}(18|19|20)\\d{2}[01]\\d[0123]\\d{4}[\\dxX]$/;\n/**\n * 判断字符串是否为身份证号码格式\n * @param {string} value\n * @returns {boolean}\n */\nexport function isIDNo(value: string): boolean {\n const isSameFormat = IDNO_RE.test(value);\n\n if (!isSameFormat) return false;\n\n const year = Number(value.slice(6, 10));\n const month = Number(value.slice(10, 12));\n const date = Number(value.slice(12, 14));\n const d = new Date(year, month - 1, date);\n const isSameDate = d.getFullYear() === year && d.getMonth() + 1 === month && d.getDate() === date;\n\n if (!isSameDate) return false;\n\n // 将身份证号码前面的17位数分别乘以不同的系数;\n // 从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2\n // 将这17位数字和系数相乘的结果相加;\n // 用加出来和除以11,看余数是多少;\n // 余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字;\n // 其分别对应的最后一位身份证的号码为1-0-X-9-8-7-6-5-4-3-2\n // 通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。\n const coefficientList = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];\n const residueList = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];\n let sum = 0;\n\n for (let start = 0; start < 17; start++) {\n sum += Number(value.slice(start, start + 1)) * coefficientList[start];\n }\n\n return residueList[sum % 11] === value.slice(-1);\n}\n\n// url\nconst URL_RE = /^https?:\\/\\//i;\n/**\n * 判断字符串是否为 url 格式,仅支持 http 协议,支持域名或者 ipV4\n * @param {string} value\n * @returns {boolean}\n */\nexport function isURL(value: string): boolean {\n return URL_RE.test(value);\n}\n\n// ipv4\nconst IPV4_RE = /^(?:(?:\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(?:\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])$/;\n/**\n * 判断字符串是否为 IPV4 格式,不对 ip 真实性做验证\n * @param {string} value\n * @returns {boolean}\n */\nexport function isIPV4(value: string): boolean {\n return IPV4_RE.test(value);\n}\n\nconst INTEGER_RE = /^(-?[1-9]\\d*|0)$/;\n/**\n * 判断字符串是否为整数(自然数),即 ...,-3,-2,-1,0,1,2,3,...\n * @param {string} value\n * @returns {boolean}\n */\nexport function isInteger(value: string): boolean {\n return INTEGER_RE.test(value);\n}\n\nconst FLOAT_RE = /^-?([1-9]\\d*|0)\\.\\d+$/;\n/**\n * 判断字符串是否为浮点数,即必须有小数点的有理数\n * @param {string} value\n * @returns {boolean}\n */\nexport function isFloat(value: string): boolean {\n return FLOAT_RE.test(value);\n}\n\n/**\n * 判断字符串是否为正确数值,包括整数和浮点数\n * @param {string} value\n * @returns {boolean}\n */\nexport function isNumerical(value: string): boolean {\n return isInteger(value) || isFloat(value);\n}\n\nconst DIGIT_RE = /^\\d+$/;\n/**\n * 判断字符串是否为数字,例如六位数字短信验证码(093031)\n * @param {string} value\n * @returns {boolean}\n */\nexport function isDigit(value: string): boolean {\n return DIGIT_RE.test(value);\n}\n"],"mappings":";;AAAA,IAAM,YAAY;;;;;;;;;;;AAYlB,SAAgB,aAAa,QAAwB;CACnD,OAAO,OAAO,QAAQ,WAAW,OAAO;;AAI1C,IAAM,WAAW;;;;;;AAMjB,SAAgB,QAAQ,OAAwB;CAC9C,OAAO,SAAS,KAAK,MAAM;;AAI7B,IAAM,WAAW;;;;;;AAMjB,SAAgB,QAAQ,OAAwB;CAC9C,OAAO,SAAS,KAAK,MAAM;;AAsB7B,IAAM,UACJ;;;;;;AAMF,SAAgB,OAAO,OAAwB;CAG7C,IAAI,CAFiB,QAAQ,KAAK,MAE7B,EAAc,OAAO;CAE1B,MAAM,OAAO,OAAO,MAAM,MAAM,GAAG,GAAG,CAAC;CACvC,MAAM,QAAQ,OAAO,MAAM,MAAM,IAAI,GAAG,CAAC;CACzC,MAAM,OAAO,OAAO,MAAM,MAAM,IAAI,GAAG,CAAC;CACxC,MAAM,IAAI,IAAI,KAAK,MAAM,QAAQ,GAAG,KAAK;CAGzC,IAAI,EAFe,EAAE,aAAa,KAAK,QAAQ,EAAE,UAAU,GAAG,MAAM,SAAS,EAAE,SAAS,KAAK,OAE5E,OAAO;CASxB,MAAM,kBAAkB;EAAC;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAE;CAC7E,MAAM,cAAc;EAAC;EAAK;EAAK;EAAK;EAAK;EAAK;EAAK;EAAK;EAAK;EAAK;EAAK;EAAI;CAC3E,IAAI,MAAM;CAEV,KAAK,IAAI,QAAQ,GAAG,QAAQ,IAAI,SAC9B,OAAO,OAAO,MAAM,MAAM,OAAO,QAAQ,EAAE,CAAC,GAAG,gBAAgB;CAGjE,OAAO,YAAY,MAAM,QAAQ,MAAM,MAAM,GAAG;;AAIlD,IAAM,SAAS;;;;;;AAMf,SAAgB,MAAM,OAAwB;CAC5C,OAAO,OAAO,KAAK,MAAM;;AAI3B,IAAM,UAAU;;;;;;AAMhB,SAAgB,OAAO,OAAwB;CAC7C,OAAO,QAAQ,KAAK,MAAM;;AAG5B,IAAM,aAAa;;;;;;AAMnB,SAAgB,UAAU,OAAwB;CAChD,OAAO,WAAW,KAAK,MAAM;;AAG/B,IAAM,WAAW;;;;;;AAMjB,SAAgB,QAAQ,OAAwB;CAC9C,OAAO,SAAS,KAAK,MAAM;;;;;;;AAQ7B,SAAgB,YAAY,OAAwB;CAClD,OAAO,UAAU,MAAM,IAAI,QAAQ,MAAM;;AAG3C,IAAM,WAAW;;;;;;AAMjB,SAAgB,QAAQ,OAAwB;CAC9C,OAAO,SAAS,KAAK,MAAM"}
package/dist/regexp.mjs CHANGED
@@ -1,66 +1,139 @@
1
- const specialRE = /[.*+?^=!:${}()|[\]/\\-]/g;
1
+ //#region src/regexp.ts
2
+ var specialRE = /[.*+?^=!:${}()|[\]/\\-]/g;
3
+ /**
4
+ * 编码处理正则表达式
5
+ * @example
6
+ * ```js
7
+ * reEscape('/$')
8
+ * // => '\\/\\$'
9
+ * ```
10
+ * @param {string} string
11
+ * @returns {string}
12
+ */
2
13
  function regexpEscape(string) {
3
- return string.replace(specialRE, "\\$&");
14
+ return string.replace(specialRE, "\\$&");
4
15
  }
5
- const EMAIL_RE = /^\w+[-+.\w]*@([a-z\d-]+\.)+[a-z]{2,5}$/i;
16
+ var EMAIL_RE = /^\w+[-+.\w]*@([a-z\d-]+\.)+[a-z]{2,5}$/i;
17
+ /**
18
+ * 判断字符串是否为邮箱格式,不对邮箱真实性做验证,如域名是否正确等
19
+ * @param {string} value
20
+ * @returns {boolean}
21
+ */
6
22
  function isEmail(value) {
7
- return EMAIL_RE.test(value);
23
+ return EMAIL_RE.test(value);
8
24
  }
9
- const PHONE_RE = /^1\d{10}$/;
25
+ var PHONE_RE = /^1\d{10}$/;
26
+ /**
27
+ * 判断字符串是否为宽松手机格式,即首位为 1 的 11 位数字都属于手机号
28
+ * @param {string} value
29
+ * @returns {boolean}
30
+ */
10
31
  function isPhone(value) {
11
- return PHONE_RE.test(value);
32
+ return PHONE_RE.test(value);
12
33
  }
13
- const IDNO_RE = /^(1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5]|7[1]|8[1-2]|9[1])\d{4}(18|19|20)\d{2}[01]\d[0123]\d{4}[\dxX]$/;
34
+ var IDNO_RE = /^(1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5]|7[1]|8[1-2]|9[1])\d{4}(18|19|20)\d{2}[01]\d[0123]\d{4}[\dxX]$/;
35
+ /**
36
+ * 判断字符串是否为身份证号码格式
37
+ * @param {string} value
38
+ * @returns {boolean}
39
+ */
14
40
  function isIDNo(value) {
15
- const isSameFormat = IDNO_RE.test(value);
16
- if (!isSameFormat) return false;
17
- const year = Number(value.slice(6, 10));
18
- const month = Number(value.slice(10, 12));
19
- const date = Number(value.slice(12, 14));
20
- const d = new Date(year, month - 1, date);
21
- const isSameDate = d.getFullYear() === year && d.getMonth() + 1 === month && d.getDate() === date;
22
- if (!isSameDate) return false;
23
- const coefficientList = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
24
- const residueList = ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"];
25
- let sum = 0;
26
- for (let start = 0; start < 17; start++) {
27
- sum += Number(value.slice(start, start + 1)) * coefficientList[start];
28
- }
29
- return residueList[sum % 11] === value.slice(-1);
41
+ if (!IDNO_RE.test(value)) return false;
42
+ const year = Number(value.slice(6, 10));
43
+ const month = Number(value.slice(10, 12));
44
+ const date = Number(value.slice(12, 14));
45
+ const d = new Date(year, month - 1, date);
46
+ if (!(d.getFullYear() === year && d.getMonth() + 1 === month && d.getDate() === date)) return false;
47
+ const coefficientList = [
48
+ 7,
49
+ 9,
50
+ 10,
51
+ 5,
52
+ 8,
53
+ 4,
54
+ 2,
55
+ 1,
56
+ 6,
57
+ 3,
58
+ 7,
59
+ 9,
60
+ 10,
61
+ 5,
62
+ 8,
63
+ 4,
64
+ 2
65
+ ];
66
+ const residueList = [
67
+ "1",
68
+ "0",
69
+ "X",
70
+ "9",
71
+ "8",
72
+ "7",
73
+ "6",
74
+ "5",
75
+ "4",
76
+ "3",
77
+ "2"
78
+ ];
79
+ let sum = 0;
80
+ for (let start = 0; start < 17; start++) sum += Number(value.slice(start, start + 1)) * coefficientList[start];
81
+ return residueList[sum % 11] === value.slice(-1);
30
82
  }
31
- const URL_RE = /^https?:\/\//i;
83
+ var URL_RE = /^https?:\/\//i;
84
+ /**
85
+ * 判断字符串是否为 url 格式,仅支持 http 协议,支持域名或者 ipV4
86
+ * @param {string} value
87
+ * @returns {boolean}
88
+ */
32
89
  function isURL(value) {
33
- return URL_RE.test(value);
90
+ return URL_RE.test(value);
34
91
  }
35
- const IPV4_RE = /^(?:(?:\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$/;
92
+ var IPV4_RE = /^(?:(?:\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$/;
93
+ /**
94
+ * 判断字符串是否为 IPV4 格式,不对 ip 真实性做验证
95
+ * @param {string} value
96
+ * @returns {boolean}
97
+ */
36
98
  function isIPV4(value) {
37
- return IPV4_RE.test(value);
99
+ return IPV4_RE.test(value);
38
100
  }
39
- const INTEGER_RE = /^(-?[1-9]\d*|0)$/;
101
+ var INTEGER_RE = /^(-?[1-9]\d*|0)$/;
102
+ /**
103
+ * 判断字符串是否为整数(自然数),即 ...,-3,-2,-1,0,1,2,3,...
104
+ * @param {string} value
105
+ * @returns {boolean}
106
+ */
40
107
  function isInteger(value) {
41
- return INTEGER_RE.test(value);
108
+ return INTEGER_RE.test(value);
42
109
  }
43
- const FLOAT_RE = /^-?([1-9]\d*|0)\.\d+$/;
110
+ var FLOAT_RE = /^-?([1-9]\d*|0)\.\d+$/;
111
+ /**
112
+ * 判断字符串是否为浮点数,即必须有小数点的有理数
113
+ * @param {string} value
114
+ * @returns {boolean}
115
+ */
44
116
  function isFloat(value) {
45
- return FLOAT_RE.test(value);
117
+ return FLOAT_RE.test(value);
46
118
  }
119
+ /**
120
+ * 判断字符串是否为正确数值,包括整数和浮点数
121
+ * @param {string} value
122
+ * @returns {boolean}
123
+ */
47
124
  function isNumerical(value) {
48
- return isInteger(value) || isFloat(value);
125
+ return isInteger(value) || isFloat(value);
49
126
  }
50
- const DIGIT_RE = /^\d+$/;
127
+ var DIGIT_RE = /^\d+$/;
128
+ /**
129
+ * 判断字符串是否为数字,例如六位数字短信验证码(093031)
130
+ * @param {string} value
131
+ * @returns {boolean}
132
+ */
51
133
  function isDigit(value) {
52
- return DIGIT_RE.test(value);
134
+ return DIGIT_RE.test(value);
53
135
  }
54
- export {
55
- isDigit,
56
- isEmail,
57
- isFloat,
58
- isIDNo,
59
- isIPV4,
60
- isInteger,
61
- isNumerical,
62
- isPhone,
63
- isURL,
64
- regexpEscape
65
- };
66
- //# sourceMappingURL=regexp.mjs.map
136
+ //#endregion
137
+ export { isDigit, isEmail, isFloat, isIDNo, isIPV4, isInteger, isNumerical, isPhone, isURL, regexpEscape };
138
+
139
+ //# sourceMappingURL=regexp.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"regexp.mjs","sources":["../src/regexp.ts"],"sourcesContent":["const specialRE = /[.*+?^=!:${}()|[\\]/\\\\-]/g;\n\n/**\n * 编码处理正则表达式\n * @example\n * ```js\n * reEscape('/$')\n * // => '\\\\/\\\\$'\n * ```\n * @param {string} string\n * @returns {string}\n */\nexport function regexpEscape(string: string): string {\n return string.replace(specialRE, '\\\\$&');\n}\n\n// 邮箱\nconst EMAIL_RE = /^\\w+[-+.\\w]*@([a-z\\d-]+\\.)+[a-z]{2,5}$/i;\n/**\n * 判断字符串是否为邮箱格式,不对邮箱真实性做验证,如域名是否正确等\n * @param {string} value\n * @returns {boolean}\n */\nexport function isEmail(value: string): boolean {\n return EMAIL_RE.test(value);\n}\n\n// 手机号码\nconst PHONE_RE = /^1\\d{10}$/;\n/**\n * 判断字符串是否为宽松手机格式,即首位为 1 的 11 位数字都属于手机号\n * @param {string} value\n * @returns {boolean}\n */\nexport function isPhone(value: string): boolean {\n return PHONE_RE.test(value);\n}\n\n// 身份证号码\n// http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/\n// [\"北京市\", \"天津市\", \"河北省\", \"山西省\", \"内蒙古自治区\",\n// \"辽宁省\", \"吉林省\", \"黑龙江省\",\n// \"上海市\", \"江苏省\", \"浙江省\", \"安徽省\", \"福建省\", \"江西省\", \"山东省\",\n// \"河南省\", \"湖北省\", \"湖南省\", \"广东省\", \"广西壮族自治区\", \"海南省\",\n// \"重庆市\", \"四川省\", \"贵州省\", \"云南省\", \"西藏自治区\",\n// \"陕西省\", \"甘肃省\", \"青海省\",\"宁夏回族自治区\", \"新疆维吾尔自治区\",\n// \"台湾省\",\n// \"香港特别行政区\", \"澳门特别行政区\"]\n// [\"11\", \"12\", \"13\", \"14\", \"15\",\n// \"21\", \"22\", \"23\",\n// \"31\", \"32\", \"33\", \"34\", \"35\", \"36\", \"37\",\n// \"41\", \"42\", \"43\", \"44\", \"45\", \"46\",\n// \"50\", \"51\", \"52\", \"53\", \"54\",\n// \"61\", \"62\", \"63\", \"64\", \"65\",\n// \"71\",\n// \"81\", \"82\"]\n// 91 国外\nconst IDNO_RE =\n /^(1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5]|7[1]|8[1-2]|9[1])\\d{4}(18|19|20)\\d{2}[01]\\d[0123]\\d{4}[\\dxX]$/;\n/**\n * 判断字符串是否为身份证号码格式\n * @param {string} value\n * @returns {boolean}\n */\nexport function isIDNo(value: string): boolean {\n const isSameFormat = IDNO_RE.test(value);\n\n if (!isSameFormat) return false;\n\n const year = Number(value.slice(6, 10));\n const month = Number(value.slice(10, 12));\n const date = Number(value.slice(12, 14));\n const d = new Date(year, month - 1, date);\n const isSameDate = d.getFullYear() === year && d.getMonth() + 1 === month && d.getDate() === date;\n\n if (!isSameDate) return false;\n\n // 将身份证号码前面的17位数分别乘以不同的系数;\n // 从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2\n // 将这17位数字和系数相乘的结果相加;\n // 用加出来和除以11,看余数是多少;\n // 余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字;\n // 其分别对应的最后一位身份证的号码为1-0-X-9-8-7-6-5-4-3-2\n // 通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。\n const coefficientList = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];\n const residueList = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];\n let sum = 0;\n\n for (let start = 0; start < 17; start++) {\n sum += Number(value.slice(start, start + 1)) * coefficientList[start];\n }\n\n return residueList[sum % 11] === value.slice(-1);\n}\n\n// url\nconst URL_RE = /^https?:\\/\\//i;\n/**\n * 判断字符串是否为 url 格式,仅支持 http 协议,支持域名或者 ipV4\n * @param {string} value\n * @returns {boolean}\n */\nexport function isURL(value: string): boolean {\n return URL_RE.test(value);\n}\n\n// ipv4\nconst IPV4_RE = /^(?:(?:\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(?:\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])$/;\n/**\n * 判断字符串是否为 IPV4 格式,不对 ip 真实性做验证\n * @param {string} value\n * @returns {boolean}\n */\nexport function isIPV4(value: string): boolean {\n return IPV4_RE.test(value);\n}\n\nconst INTEGER_RE = /^(-?[1-9]\\d*|0)$/;\n/**\n * 判断字符串是否为整数(自然数),即 ...,-3,-2,-1,0,1,2,3,...\n * @param {string} value\n * @returns {boolean}\n */\nexport function isInteger(value: string): boolean {\n return INTEGER_RE.test(value);\n}\n\nconst FLOAT_RE = /^-?([1-9]\\d*|0)\\.\\d+$/;\n/**\n * 判断字符串是否为浮点数,即必须有小数点的有理数\n * @param {string} value\n * @returns {boolean}\n */\nexport function isFloat(value: string): boolean {\n return FLOAT_RE.test(value);\n}\n\n/**\n * 判断字符串是否为正确数值,包括整数和浮点数\n * @param {string} value\n * @returns {boolean}\n */\nexport function isNumerical(value: string): boolean {\n return isInteger(value) || isFloat(value);\n}\n\nconst DIGIT_RE = /^\\d+$/;\n/**\n * 判断字符串是否为数字,例如六位数字短信验证码(093031)\n * @param {string} value\n * @returns {boolean}\n */\nexport function isDigit(value: string): boolean {\n return DIGIT_RE.test(value);\n}\n"],"names":[],"mappings":"AAAA,MAAM,YAAY;AAYX,SAAS,aAAa,QAAwB;AAC5C,SAAA,OAAO,QAAQ,WAAW,MAAM;AACzC;AAGA,MAAM,WAAW;AAMV,SAAS,QAAQ,OAAwB;AACvC,SAAA,SAAS,KAAK,KAAK;AAC5B;AAGA,MAAM,WAAW;AAMV,SAAS,QAAQ,OAAwB;AACvC,SAAA,SAAS,KAAK,KAAK;AAC5B;AAqBA,MAAM,UACJ;AAMK,SAAS,OAAO,OAAwB;AACvC,QAAA,eAAe,QAAQ,KAAK,KAAK;AAEnC,MAAA,CAAC,aAAqB,QAAA;AAE1B,QAAM,OAAO,OAAO,MAAM,MAAM,GAAG,EAAE,CAAC;AACtC,QAAM,QAAQ,OAAO,MAAM,MAAM,IAAI,EAAE,CAAC;AACxC,QAAM,OAAO,OAAO,MAAM,MAAM,IAAI,EAAE,CAAC;AACvC,QAAM,IAAI,IAAI,KAAK,MAAM,QAAQ,GAAG,IAAI;AACxC,QAAM,aAAa,EAAE,YAAY,MAAM,QAAQ,EAAE,SAAS,IAAI,MAAM,SAAS,EAAE,QAAc,MAAA;AAEzF,MAAA,CAAC,WAAmB,QAAA;AASxB,QAAM,kBAAkB,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC;AAC5E,QAAM,cAAc,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAC1E,MAAI,MAAM;AAEV,WAAS,QAAQ,GAAG,QAAQ,IAAI,SAAS;AAChC,WAAA,OAAO,MAAM,MAAM,OAAO,QAAQ,CAAC,CAAC,IAAI,gBAAgB,KAAK;AAAA,EAAA;AAGtE,SAAO,YAAY,MAAM,EAAE,MAAM,MAAM,MAAM,EAAE;AACjD;AAGA,MAAM,SAAS;AAMR,SAAS,MAAM,OAAwB;AACrC,SAAA,OAAO,KAAK,KAAK;AAC1B;AAGA,MAAM,UAAU;AAMT,SAAS,OAAO,OAAwB;AACtC,SAAA,QAAQ,KAAK,KAAK;AAC3B;AAEA,MAAM,aAAa;AAMZ,SAAS,UAAU,OAAwB;AACzC,SAAA,WAAW,KAAK,KAAK;AAC9B;AAEA,MAAM,WAAW;AAMV,SAAS,QAAQ,OAAwB;AACvC,SAAA,SAAS,KAAK,KAAK;AAC5B;AAOO,SAAS,YAAY,OAAwB;AAClD,SAAO,UAAU,KAAK,KAAK,QAAQ,KAAK;AAC1C;AAEA,MAAM,WAAW;AAMV,SAAS,QAAQ,OAAwB;AACvC,SAAA,SAAS,KAAK,KAAK;AAC5B;"}
1
+ {"version":3,"file":"regexp.mjs","names":[],"sources":["../src/regexp.ts"],"sourcesContent":["const specialRE = /[.*+?^=!:${}()|[\\]/\\\\-]/g;\n\n/**\n * 编码处理正则表达式\n * @example\n * ```js\n * reEscape('/$')\n * // => '\\\\/\\\\$'\n * ```\n * @param {string} string\n * @returns {string}\n */\nexport function regexpEscape(string: string): string {\n return string.replace(specialRE, '\\\\$&');\n}\n\n// 邮箱\nconst EMAIL_RE = /^\\w+[-+.\\w]*@([a-z\\d-]+\\.)+[a-z]{2,5}$/i;\n/**\n * 判断字符串是否为邮箱格式,不对邮箱真实性做验证,如域名是否正确等\n * @param {string} value\n * @returns {boolean}\n */\nexport function isEmail(value: string): boolean {\n return EMAIL_RE.test(value);\n}\n\n// 手机号码\nconst PHONE_RE = /^1\\d{10}$/;\n/**\n * 判断字符串是否为宽松手机格式,即首位为 1 的 11 位数字都属于手机号\n * @param {string} value\n * @returns {boolean}\n */\nexport function isPhone(value: string): boolean {\n return PHONE_RE.test(value);\n}\n\n// 身份证号码\n// http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/\n// [\"北京市\", \"天津市\", \"河北省\", \"山西省\", \"内蒙古自治区\",\n// \"辽宁省\", \"吉林省\", \"黑龙江省\",\n// \"上海市\", \"江苏省\", \"浙江省\", \"安徽省\", \"福建省\", \"江西省\", \"山东省\",\n// \"河南省\", \"湖北省\", \"湖南省\", \"广东省\", \"广西壮族自治区\", \"海南省\",\n// \"重庆市\", \"四川省\", \"贵州省\", \"云南省\", \"西藏自治区\",\n// \"陕西省\", \"甘肃省\", \"青海省\",\"宁夏回族自治区\", \"新疆维吾尔自治区\",\n// \"台湾省\",\n// \"香港特别行政区\", \"澳门特别行政区\"]\n// [\"11\", \"12\", \"13\", \"14\", \"15\",\n// \"21\", \"22\", \"23\",\n// \"31\", \"32\", \"33\", \"34\", \"35\", \"36\", \"37\",\n// \"41\", \"42\", \"43\", \"44\", \"45\", \"46\",\n// \"50\", \"51\", \"52\", \"53\", \"54\",\n// \"61\", \"62\", \"63\", \"64\", \"65\",\n// \"71\",\n// \"81\", \"82\"]\n// 91 国外\nconst IDNO_RE =\n /^(1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5]|7[1]|8[1-2]|9[1])\\d{4}(18|19|20)\\d{2}[01]\\d[0123]\\d{4}[\\dxX]$/;\n/**\n * 判断字符串是否为身份证号码格式\n * @param {string} value\n * @returns {boolean}\n */\nexport function isIDNo(value: string): boolean {\n const isSameFormat = IDNO_RE.test(value);\n\n if (!isSameFormat) return false;\n\n const year = Number(value.slice(6, 10));\n const month = Number(value.slice(10, 12));\n const date = Number(value.slice(12, 14));\n const d = new Date(year, month - 1, date);\n const isSameDate = d.getFullYear() === year && d.getMonth() + 1 === month && d.getDate() === date;\n\n if (!isSameDate) return false;\n\n // 将身份证号码前面的17位数分别乘以不同的系数;\n // 从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2\n // 将这17位数字和系数相乘的结果相加;\n // 用加出来和除以11,看余数是多少;\n // 余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字;\n // 其分别对应的最后一位身份证的号码为1-0-X-9-8-7-6-5-4-3-2\n // 通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。\n const coefficientList = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];\n const residueList = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];\n let sum = 0;\n\n for (let start = 0; start < 17; start++) {\n sum += Number(value.slice(start, start + 1)) * coefficientList[start];\n }\n\n return residueList[sum % 11] === value.slice(-1);\n}\n\n// url\nconst URL_RE = /^https?:\\/\\//i;\n/**\n * 判断字符串是否为 url 格式,仅支持 http 协议,支持域名或者 ipV4\n * @param {string} value\n * @returns {boolean}\n */\nexport function isURL(value: string): boolean {\n return URL_RE.test(value);\n}\n\n// ipv4\nconst IPV4_RE = /^(?:(?:\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(?:\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])$/;\n/**\n * 判断字符串是否为 IPV4 格式,不对 ip 真实性做验证\n * @param {string} value\n * @returns {boolean}\n */\nexport function isIPV4(value: string): boolean {\n return IPV4_RE.test(value);\n}\n\nconst INTEGER_RE = /^(-?[1-9]\\d*|0)$/;\n/**\n * 判断字符串是否为整数(自然数),即 ...,-3,-2,-1,0,1,2,3,...\n * @param {string} value\n * @returns {boolean}\n */\nexport function isInteger(value: string): boolean {\n return INTEGER_RE.test(value);\n}\n\nconst FLOAT_RE = /^-?([1-9]\\d*|0)\\.\\d+$/;\n/**\n * 判断字符串是否为浮点数,即必须有小数点的有理数\n * @param {string} value\n * @returns {boolean}\n */\nexport function isFloat(value: string): boolean {\n return FLOAT_RE.test(value);\n}\n\n/**\n * 判断字符串是否为正确数值,包括整数和浮点数\n * @param {string} value\n * @returns {boolean}\n */\nexport function isNumerical(value: string): boolean {\n return isInteger(value) || isFloat(value);\n}\n\nconst DIGIT_RE = /^\\d+$/;\n/**\n * 判断字符串是否为数字,例如六位数字短信验证码(093031)\n * @param {string} value\n * @returns {boolean}\n */\nexport function isDigit(value: string): boolean {\n return DIGIT_RE.test(value);\n}\n"],"mappings":";AAAA,IAAM,YAAY;;;;;;;;;;;AAYlB,SAAgB,aAAa,QAAwB;CACnD,OAAO,OAAO,QAAQ,WAAW,OAAO;;AAI1C,IAAM,WAAW;;;;;;AAMjB,SAAgB,QAAQ,OAAwB;CAC9C,OAAO,SAAS,KAAK,MAAM;;AAI7B,IAAM,WAAW;;;;;;AAMjB,SAAgB,QAAQ,OAAwB;CAC9C,OAAO,SAAS,KAAK,MAAM;;AAsB7B,IAAM,UACJ;;;;;;AAMF,SAAgB,OAAO,OAAwB;CAG7C,IAAI,CAFiB,QAAQ,KAAK,MAE7B,EAAc,OAAO;CAE1B,MAAM,OAAO,OAAO,MAAM,MAAM,GAAG,GAAG,CAAC;CACvC,MAAM,QAAQ,OAAO,MAAM,MAAM,IAAI,GAAG,CAAC;CACzC,MAAM,OAAO,OAAO,MAAM,MAAM,IAAI,GAAG,CAAC;CACxC,MAAM,IAAI,IAAI,KAAK,MAAM,QAAQ,GAAG,KAAK;CAGzC,IAAI,EAFe,EAAE,aAAa,KAAK,QAAQ,EAAE,UAAU,GAAG,MAAM,SAAS,EAAE,SAAS,KAAK,OAE5E,OAAO;CASxB,MAAM,kBAAkB;EAAC;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAE;CAC7E,MAAM,cAAc;EAAC;EAAK;EAAK;EAAK;EAAK;EAAK;EAAK;EAAK;EAAK;EAAK;EAAK;EAAI;CAC3E,IAAI,MAAM;CAEV,KAAK,IAAI,QAAQ,GAAG,QAAQ,IAAI,SAC9B,OAAO,OAAO,MAAM,MAAM,OAAO,QAAQ,EAAE,CAAC,GAAG,gBAAgB;CAGjE,OAAO,YAAY,MAAM,QAAQ,MAAM,MAAM,GAAG;;AAIlD,IAAM,SAAS;;;;;;AAMf,SAAgB,MAAM,OAAwB;CAC5C,OAAO,OAAO,KAAK,MAAM;;AAI3B,IAAM,UAAU;;;;;;AAMhB,SAAgB,OAAO,OAAwB;CAC7C,OAAO,QAAQ,KAAK,MAAM;;AAG5B,IAAM,aAAa;;;;;;AAMnB,SAAgB,UAAU,OAAwB;CAChD,OAAO,WAAW,KAAK,MAAM;;AAG/B,IAAM,WAAW;;;;;;AAMjB,SAAgB,QAAQ,OAAwB;CAC9C,OAAO,SAAS,KAAK,MAAM;;;;;;;AAQ7B,SAAgB,YAAY,OAAwB;CAClD,OAAO,UAAU,MAAM,IAAI,QAAQ,MAAM;;AAG3C,IAAM,WAAW;;;;;;AAMjB,SAAgB,QAAQ,OAAwB;CAC9C,OAAO,SAAS,KAAK,MAAM"}
package/dist/string.cjs CHANGED
@@ -1,16 +1,13 @@
1
- "use strict";
2
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const number = require("./string2.cjs");
4
- require("./type.cjs");
5
- exports.STRING_ARABIC_NUMERALS = number.STRING_ARABIC_NUMERALS;
6
- exports.STRING_DICT = number.STRING_DICT;
7
- exports.STRING_HEXADECIMALS = number.STRING_HEXADECIMALS;
8
- exports.STRING_LOWERCASE_ALPHA = number.STRING_LOWERCASE_ALPHA;
9
- exports.STRING_UPPERCASE_ALPHA = number.STRING_UPPERCASE_ALPHA;
10
- exports.randomString = number.randomString;
11
- exports.randomUUID4 = number.randomUUID4;
12
- exports.stringCamelCase = number.stringCamelCase;
13
- exports.stringFormat = number.stringFormat;
14
- exports.stringKebabCase = number.stringKebabCase;
15
- exports.stringify = number.stringify;
16
- //# sourceMappingURL=string.cjs.map
2
+ const require_string = require("./string2.cjs");
3
+ exports.STRING_ARABIC_NUMERALS = require_string.STRING_ARABIC_NUMERALS;
4
+ exports.STRING_DICT = require_string.STRING_DICT;
5
+ exports.STRING_HEXADECIMALS = require_string.STRING_HEXADECIMALS;
6
+ exports.STRING_LOWERCASE_ALPHA = require_string.STRING_LOWERCASE_ALPHA;
7
+ exports.STRING_UPPERCASE_ALPHA = require_string.STRING_UPPERCASE_ALPHA;
8
+ exports.randomString = require_string.randomString;
9
+ exports.randomUUID4 = require_string.randomUUID4;
10
+ exports.stringCamelCase = require_string.stringCamelCase;
11
+ exports.stringFormat = require_string.stringFormat;
12
+ exports.stringKebabCase = require_string.stringKebabCase;
13
+ exports.stringify = require_string.stringify;
package/dist/string.mjs CHANGED
@@ -1,16 +1,2 @@
1
- import { h, S, i, j, k, o, p, l, s, m, q } from "./string2.mjs";
2
- import "./type.mjs";
3
- export {
4
- h as STRING_ARABIC_NUMERALS,
5
- S as STRING_DICT,
6
- i as STRING_HEXADECIMALS,
7
- j as STRING_LOWERCASE_ALPHA,
8
- k as STRING_UPPERCASE_ALPHA,
9
- o as randomString,
10
- p as randomUUID4,
11
- l as stringCamelCase,
12
- s as stringFormat,
13
- m as stringKebabCase,
14
- q as stringify
15
- };
16
- //# sourceMappingURL=string.mjs.map
1
+ import { a as STRING_UPPERCASE_ALPHA, c as stringCamelCase, d as stringify, i as STRING_LOWERCASE_ALPHA, l as stringFormat, n as STRING_DICT, o as randomString, r as STRING_HEXADECIMALS, s as randomUUID4, t as STRING_ARABIC_NUMERALS, u as stringKebabCase } from "./string2.mjs";
2
+ export { STRING_ARABIC_NUMERALS, STRING_DICT, STRING_HEXADECIMALS, STRING_LOWERCASE_ALPHA, STRING_UPPERCASE_ALPHA, randomString, randomUUID4, stringCamelCase, stringFormat, stringKebabCase, stringify };