util-helpers 4.10.0 → 4.10.3

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.
@@ -500,7 +500,7 @@
500
500
  * @since 1.1.0
501
501
  * @param {*} value 要检测的值
502
502
  * @param {Object} [options] 配置项
503
- * @param {boolean} [options.loose=false] 宽松模式。如果为true,不校验校验位。
503
+ * @param {boolean} [options.checkCode=true] 是否校验最后一位校验码,如果为false,不校验校验位。
504
504
  * @returns {boolean} 值是否为统一社会信用代码
505
505
  * @example
506
506
  *
@@ -510,18 +510,25 @@
510
510
  * isSocialCreditCode('91350100M000100Y4A');
511
511
  * // => false
512
512
  *
513
- * // 宽松模式,不校验校验位。所以也可以通过
514
- * isSocialCreditCode('91350100M000100Y4A', {loose: true});
513
+ * // 不校验校验位
514
+ * isSocialCreditCode('91350100M000100Y4A', { checkCode: false });
515
515
  * // => true
516
516
  *
517
+ * isSocialCreditCode('91350100M000100Y', { checkCode: false });
518
+ * // => false
519
+ *
517
520
  */
518
- function isSocialCreditCode(value, { loose = false } = {}) {
521
+ function isSocialCreditCode(value, options = {}) {
519
522
  const valueStr = normalizeString(value);
523
+ // @ts-ignore
524
+ // TODO 下个版本废弃 loose
525
+ const { loose = false, checkCode: cc = true } = options;
526
+ const needCheckCode = !loose && cc;
520
527
 
521
528
  const passBaseRule = baseReg$1.test(valueStr);
522
529
 
523
530
  // 宽松模式 或 基础规则不通过直接返回
524
- if (loose || !passBaseRule) {
531
+ if (!needCheckCode || !passBaseRule) {
525
532
  return passBaseRule;
526
533
  }
527
534
 
@@ -853,12 +860,12 @@
853
860
  return validatePassword(value, { level, ignoreCase, special }).validated;
854
861
  }
855
862
 
856
- // 护照号 9位,包括首字母和数字;支持 普通护照(E*)、外交护照(DE)、公务护照(SE)、公务普通护照(PE)、香港特区护照(K/KJ)、澳门特区护照(MA)
857
- const reg$5 = /^((e[\da-z])|(de)|(se)|(pe)|(k[\da-z])|(kj)|(ma))[\da-z]{7}$/i;
863
+ // 护照号 9位,包括首字母和数字;支持 普通护照(E*)、外交护照(DE)、公务护照(SE)、公务普通护照(PE)、香港特区护照(K/KJ/H*)、澳门特区护照(MA/MB/M*)
864
+ const reg$5 = /^((e[\da-z])|(de)|(se)|(pe)|([khm][\da-z]))[\da-z]{7}$/i;
858
865
 
859
866
  /**
860
867
  * 检测值是否为护照号
861
- * 支持普通护照(E*)、外交护照(DE)、公务护照(SE)、公务普通护照(PE)、香港特区护照(K/KJ)、澳门特区护照(MA)
868
+ * 支持普通护照(E*)、外交护照(DE)、公务护照(SE)、公务普通护照(PE)、香港特区护照(K/KJ/H*)、澳门特区护照(MA/MB/M*),注意不区分大小写
862
869
  *
863
870
  * @static
864
871
  * @alias module:Validator.isPassport
@@ -1121,32 +1128,33 @@
1121
1128
  * @since 3.5.0
1122
1129
  * @param {*} value 要检测的值
1123
1130
  * @param {Object} [options] 配置项
1124
- * @param {boolean} [options.loose=false] 宽松模式。如果为true,不校验校验位。
1131
+ * @param {boolean} [options.checkCode=true] 是否校验最后一位校验码,如果为false,不校验校验位。
1125
1132
  * @returns {boolean} 值是否为营业执照号
1126
1133
  * @example
1127
1134
  *
1128
1135
  * isBusinessLicense('310115600985533');
1129
1136
  * // => true
1130
1137
  *
1131
- * isBusinessLicense('3101156009');
1132
- * // => false
1133
- *
1134
- * isBusinessLicense('3101156009', { loose: true });
1135
- * // => false
1136
- *
1137
1138
  * isBusinessLicense('310115600985535');
1138
1139
  * // => false
1139
1140
  *
1140
- * isBusinessLicense('310115600985535', { loose: true });
1141
+ * isBusinessLicense('310115600985535', { checkCode: false });
1141
1142
  * // => true
1143
+ *
1144
+ * isBusinessLicense('31011560098', { checkCode: false });
1145
+ * // => false
1142
1146
  */
1143
- function isBusinessLicense(value, { loose = false } = {}) {
1147
+ function isBusinessLicense(value, options = {}) {
1144
1148
  const valueStr = normalizeString(value);
1149
+ // @ts-ignore
1150
+ // TODO 下个版本废弃 loose
1151
+ const { loose = false, checkCode: cc = true } = options;
1152
+ const needCheckCode = !loose && cc;
1145
1153
 
1146
1154
  const passBaseRule = baseReg.test(valueStr);
1147
1155
 
1148
1156
  // 宽松模式 或 基础规则不通过直接返回
1149
- if (loose || !passBaseRule) {
1157
+ if (!needCheckCode || !passBaseRule) {
1150
1158
  return passBaseRule;
1151
1159
  }
1152
1160
 
@@ -1213,8 +1221,11 @@
1213
1221
  return regHMCard.test(valueStr);
1214
1222
  }
1215
1223
 
1216
- // 台湾居民来往大陆通行证正则,支持一次性短期台胞证
1217
- const regTWCard = /^(\d{8}|[\da-z]{10})$/i;
1224
+ // 台湾居民来往大陆通行证正则
1225
+ const regTWCard = /^\d{8}$/i;
1226
+
1227
+ // 一次性短期台胞证
1228
+ const singleRegTWCard = /^[\da-z]{10,12}$/i;
1218
1229
 
1219
1230
  /**
1220
1231
  * 检测值是否为台湾居民来往大陆通行证,俗称台胞证。
@@ -1224,17 +1235,23 @@
1224
1235
  * @since 4.0.0
1225
1236
  * @see 参考 {@link https://zh.wikipedia.org/wiki/台湾居民来往大陆通行证|台湾居民来往大陆通行证}
1226
1237
  * @param {*} value 要检测的值
1238
+ * @param {Object} [options] 配置项
1239
+ * @param {boolean} [options.loose=false] 宽松模式。如果为true,表示支持一次性短期通行证
1227
1240
  * @returns {boolean} 是否为台湾居民来往大陆通行证
1228
1241
  * @example
1229
1242
  * isTWCard('12345678') // true
1230
1243
  * isTWCard('07257456') // true
1231
1244
  *
1232
1245
  * // 一次性短期
1233
- * isTWCard('F290299977') // true
1246
+ * isTWCard('F290299977') // false
1247
+ * isTWCard('F290299977', { loose: true }) // true
1234
1248
  */
1235
- function isTWCard(value) {
1249
+ function isTWCard(value, { loose = false } = {}) {
1236
1250
  const valueStr = normalizeString(value);
1237
- return regTWCard.test(valueStr);
1251
+ if (regTWCard.test(valueStr)) {
1252
+ return true;
1253
+ }
1254
+ return loose ? singleRegTWCard.test(valueStr) : false;
1238
1255
  }
1239
1256
 
1240
1257
  const reg$1 = /^[A-Z]{6}[A-Z\d]{2}(?:[A-Z\d]{3})?$/;