util-helpers 4.16.1 → 4.17.0
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.
- package/README.md +3 -1
- package/dist/util-helpers.js +1542 -4040
- package/dist/util-helpers.js.map +1 -1
- package/dist/util-helpers.min.js +1 -1
- package/dist/util-helpers.min.js.map +1 -1
- package/esm/ajax.js +50 -146
- package/esm/blobToDataURL.js +4 -34
- package/esm/bytesToSize.js +12 -37
- package/esm/calculateCursorPosition.js +30 -52
- package/esm/dataURLToBlob.js +14 -28
- package/esm/divide.js +24 -48
- package/esm/download.js +83 -164
- package/esm/fileReader.js +18 -64
- package/esm/filterTree.js +25 -57
- package/esm/findTreeNode.js +39 -69
- package/esm/findTreeNodes.js +35 -68
- package/esm/findTreeSelect.js +38 -76
- package/esm/formatBankCard.js +13 -43
- package/esm/formatMobile.js +17 -43
- package/esm/formatMoney.js +59 -139
- package/esm/index.js +55 -130
- package/esm/isBankCard.js +22 -57
- package/esm/isBusinessLicense.js +32 -78
- package/esm/isChinese.js +23 -66
- package/esm/isEmail.js +6 -21
- package/esm/isHMCard.js +5 -28
- package/esm/isIPv4.js +5 -22
- package/esm/isIPv6.js +5 -36
- package/esm/isIdCard.js +27 -66
- package/esm/isMobile.js +5 -20
- package/esm/isPassport.js +5 -22
- package/esm/isPassword.js +7 -48
- package/esm/isPostcode.js +5 -20
- package/esm/isPromiseLike.js +3 -18
- package/esm/isQQ.js +5 -20
- package/esm/isSocialCreditCode.js +28 -83
- package/esm/isSwiftCode.js +6 -25
- package/esm/isTWCard.js +11 -37
- package/esm/isTelephone.js +6 -27
- package/esm/isUrl.js +5 -44
- package/esm/isVehicle.js +5 -28
- package/esm/isWX.js +5 -20
- package/esm/listToTree.js +51 -122
- package/esm/minus.js +21 -39
- package/esm/normalizeString.js +8 -29
- package/esm/numberToChinese.js +96 -215
- package/esm/padZero.js +14 -36
- package/esm/parseIdCard.js +64 -132
- package/esm/plus.js +21 -39
- package/esm/randomString.js +13 -45
- package/esm/replaceChar.js +27 -77
- package/esm/round.js +14 -31
- package/esm/safeDate.js +12 -55
- package/esm/setDataURLPrefix.js +6 -29
- package/esm/strlen.js +14 -30
- package/esm/times.js +24 -42
- package/esm/transformFieldNames.js +37 -95
- package/esm/treeToList.js +25 -86
- package/esm/utils/config.js +4 -14
- package/esm/utils/constants.js +4 -4
- package/esm/utils/convertToString.js +4 -9
- package/esm/utils/devWarn.js +11 -11
- package/esm/utils/math.util.js +95 -181
- package/esm/utils/type/isBlob.js +4 -24
- package/esm/utils/type/isNaN.js +4 -19
- package/esm/utils/type/isNil.js +5 -13
- package/esm/utils/type/isNull.js +3 -18
- package/esm/utils/type/isNumber.js +4 -28
- package/esm/utils/type/isObject.js +4 -23
- package/esm/utils/type/isString.js +4 -19
- package/esm/utils/type/isSymbol.js +4 -19
- package/esm/utils/type/isType.js +3 -12
- package/esm/utils/type/isUndefined.js +3 -21
- package/esm/validatePassword.js +86 -237
- package/esm/waitTime.js +7 -26
- package/lib/ajax.js +51 -152
- package/lib/blobToDataURL.js +5 -40
- package/lib/bytesToSize.js +13 -43
- package/lib/calculateCursorPosition.js +31 -58
- package/lib/dataURLToBlob.js +15 -34
- package/lib/divide.js +26 -60
- package/lib/download.js +85 -169
- package/lib/fileReader.js +19 -70
- package/lib/filterTree.js +27 -66
- package/lib/findTreeNode.js +40 -77
- package/lib/findTreeNodes.js +36 -76
- package/lib/findTreeSelect.js +40 -82
- package/lib/formatBankCard.js +15 -50
- package/lib/formatMobile.js +19 -50
- package/lib/formatMoney.js +60 -150
- package/lib/index.js +117 -395
- package/lib/isBankCard.js +24 -64
- package/lib/isBusinessLicense.js +34 -85
- package/lib/isChinese.js +24 -73
- package/lib/isEmail.js +7 -27
- package/lib/isHMCard.js +7 -35
- package/lib/isIPv4.js +7 -29
- package/lib/isIPv6.js +7 -43
- package/lib/isIdCard.js +29 -73
- package/lib/isMobile.js +7 -27
- package/lib/isPassport.js +7 -29
- package/lib/isPassword.js +9 -55
- package/lib/isPostcode.js +7 -27
- package/lib/isPromiseLike.js +4 -24
- package/lib/isQQ.js +7 -27
- package/lib/isSocialCreditCode.js +30 -90
- package/lib/isSwiftCode.js +7 -32
- package/lib/isTWCard.js +13 -44
- package/lib/isTelephone.js +7 -33
- package/lib/isUrl.js +6 -50
- package/lib/isVehicle.js +7 -35
- package/lib/isWX.js +7 -27
- package/lib/listToTree.js +53 -131
- package/lib/minus.js +23 -51
- package/lib/normalizeString.js +10 -36
- package/lib/numberToChinese.js +98 -222
- package/lib/padZero.js +16 -43
- package/lib/parseIdCard.js +65 -138
- package/lib/plus.js +23 -51
- package/lib/randomString.js +14 -51
- package/lib/replaceChar.js +28 -83
- package/lib/round.js +15 -37
- package/lib/safeDate.js +13 -63
- package/lib/setDataURLPrefix.js +7 -35
- package/lib/strlen.js +16 -37
- package/lib/times.js +26 -53
- package/lib/transformFieldNames.js +38 -101
- package/lib/treeToList.js +27 -94
- package/lib/utils/config.js +6 -23
- package/lib/utils/constants.js +3 -11
- package/lib/utils/convertToString.js +6 -16
- package/lib/utils/devWarn.js +13 -17
- package/lib/utils/math.util.js +95 -185
- package/lib/utils/type/isBlob.js +6 -31
- package/lib/utils/type/isNaN.js +6 -26
- package/lib/utils/type/isNil.js +7 -20
- package/lib/utils/type/isNull.js +4 -24
- package/lib/utils/type/isNumber.js +6 -35
- package/lib/utils/type/isObject.js +5 -29
- package/lib/utils/type/isString.js +6 -26
- package/lib/utils/type/isSymbol.js +6 -26
- package/lib/utils/type/isType.js +4 -18
- package/lib/utils/type/isUndefined.js +4 -27
- package/lib/validatePassword.js +87 -244
- package/lib/waitTime.js +8 -32
- package/package.json +30 -34
- package/types/ajax.d.ts +38 -95
- package/types/blobToDataURL.d.ts +2 -2
- package/types/bytesToSize.d.ts +7 -6
- package/types/calculateCursorPosition.d.ts +10 -9
- package/types/dataURLToBlob.d.ts +5 -5
- package/types/divide.d.ts +2 -2
- package/types/download.d.ts +22 -38
- package/types/fileReader.d.ts +35 -2
- package/types/filterTree.d.ts +6 -7
- package/types/findTreeNode.d.ts +5 -7
- package/types/findTreeNodes.d.ts +5 -7
- package/types/findTreeSelect.d.ts +5 -7
- package/types/formatBankCard.d.ts +8 -5
- package/types/formatMobile.d.ts +7 -4
- package/types/formatMoney.d.ts +8 -7
- package/types/index.d.ts +125 -55
- package/types/isBankCard.d.ts +9 -8
- package/types/isBusinessLicense.d.ts +8 -5
- package/types/isChinese.d.ts +9 -8
- package/types/isEmail.d.ts +1 -1
- package/types/isHMCard.d.ts +2 -2
- package/types/isIPv4.d.ts +1 -1
- package/types/isIPv6.d.ts +1 -1
- package/types/isIdCard.d.ts +8 -7
- package/types/isMobile.d.ts +1 -1
- package/types/isPassport.d.ts +2 -2
- package/types/isPassword.d.ts +4 -7
- package/types/isPostcode.d.ts +1 -1
- package/types/isPromiseLike.d.ts +1 -1
- package/types/isQQ.d.ts +1 -1
- package/types/isSocialCreditCode.d.ts +8 -5
- package/types/isSwiftCode.d.ts +2 -2
- package/types/isTWCard.d.ts +6 -5
- package/types/isTelephone.d.ts +1 -1
- package/types/isUrl.d.ts +2 -2
- package/types/isVehicle.d.ts +2 -2
- package/types/isWX.d.ts +1 -1
- package/types/listToTree.d.ts +12 -12
- package/types/minus.d.ts +3 -2
- package/types/normalizeString.d.ts +2 -2
- package/types/numberToChinese.d.ts +13 -12
- package/types/padZero.d.ts +2 -2
- package/types/parseIdCard.d.ts +17 -56
- package/types/plus.d.ts +3 -2
- package/types/randomString.d.ts +2 -2
- package/types/replaceChar.d.ts +15 -11
- package/types/round.d.ts +2 -2
- package/types/safeDate.d.ts +24 -2
- package/types/setDataURLPrefix.d.ts +5 -5
- package/types/strlen.d.ts +1 -1
- package/types/times.d.ts +3 -2
- package/types/transformFieldNames.d.ts +12 -10
- package/types/treeToList.d.ts +1 -1
- package/types/utils/config.d.ts +6 -5
- package/types/utils/constants.d.ts +2 -2
- package/types/utils/convertToString.d.ts +1 -1
- package/types/utils/devWarn.d.ts +1 -1
- package/types/utils/math.util.d.ts +15 -9
- package/types/utils/type/index.d.ts +7 -0
- package/types/utils/type/isArguments.d.ts +1 -1
- package/types/utils/type/isArray.d.ts +1 -1
- package/types/utils/type/isArrayBuffer.d.ts +1 -1
- package/types/utils/type/isBlob.d.ts +1 -1
- package/types/utils/type/isBoolean.d.ts +1 -1
- package/types/utils/type/isDate.d.ts +1 -1
- package/types/utils/type/isError.d.ts +1 -1
- package/types/utils/type/isFunction.d.ts +1 -1
- package/types/utils/type/isMap.d.ts +1 -1
- package/types/utils/type/isNaN.d.ts +1 -1
- package/types/utils/type/isNil.d.ts +1 -1
- package/types/utils/type/isNull.d.ts +1 -1
- package/types/utils/type/isNumber.d.ts +1 -1
- package/types/utils/type/isObject.d.ts +1 -1
- package/types/utils/type/isRegExp.d.ts +1 -1
- package/types/utils/type/isSet.d.ts +1 -1
- package/types/utils/type/isString.d.ts +1 -1
- package/types/utils/type/isSymbol.d.ts +1 -1
- package/types/utils/type/isType.d.ts +1 -1
- package/types/utils/type/isUndefined.d.ts +1 -1
- package/types/utils/type/isWeakMap.d.ts +1 -1
- package/types/utils/type/isWeakSet.d.ts +1 -1
- package/types/validatePassword.d.ts +17 -48
- package/types/waitTime.d.ts +2 -2
- package/esm/interface.doc.js +0 -125
- package/esm/interface.type.js +0 -17
- package/esm/utils/type/index.js +0 -29
- package/esm/utils/type/isArguments.js +0 -22
- package/esm/utils/type/isArray.js +0 -22
- package/esm/utils/type/isArrayBuffer.js +0 -25
- package/esm/utils/type/isBoolean.js +0 -22
- package/esm/utils/type/isDate.js +0 -22
- package/esm/utils/type/isError.js +0 -22
- package/esm/utils/type/isFunction.js +0 -22
- package/esm/utils/type/isMap.js +0 -22
- package/esm/utils/type/isRegExp.js +0 -22
- package/esm/utils/type/isSet.js +0 -22
- package/esm/utils/type/isWeakMap.js +0 -22
- package/esm/utils/type/isWeakSet.js +0 -22
- package/lib/interface.doc.js +0 -127
- package/lib/interface.type.js +0 -5
- package/lib/utils/type/index.js +0 -146
- package/lib/utils/type/isArguments.js +0 -29
- package/lib/utils/type/isArray.js +0 -29
- package/lib/utils/type/isArrayBuffer.js +0 -32
- package/lib/utils/type/isBoolean.js +0 -29
- package/lib/utils/type/isDate.js +0 -29
- package/lib/utils/type/isError.js +0 -29
- package/lib/utils/type/isFunction.js +0 -29
- package/lib/utils/type/isMap.js +0 -29
- package/lib/utils/type/isRegExp.js +0 -29
- package/lib/utils/type/isSet.js +0 -29
- package/lib/utils/type/isWeakMap.js +0 -29
- package/lib/utils/type/isWeakSet.js +0 -29
- package/types/interface.type.d.ts +0 -2
package/lib/isBusinessLicense.js
CHANGED
|
@@ -1,90 +1,39 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
var _normalizeString = _interopRequireDefault(require("./normalizeString"));
|
|
8
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
9
|
-
// 基础规则,由14位数字本体码和1位数字校验码组成,其中本体码从左至右依次为:6位首次登记机关码、8位顺序码。
|
|
10
|
-
var baseReg = /^\d{15}$/;
|
|
3
|
+
var normalizeString = require('./normalizeString.js');
|
|
11
4
|
|
|
12
|
-
|
|
13
|
-
* 计算校验码
|
|
14
|
-
*
|
|
15
|
-
* @private
|
|
16
|
-
* @since 3.5.0
|
|
17
|
-
* @param {string} preCode 营业执照前14位
|
|
18
|
-
* @returns {number} 校验码
|
|
19
|
-
*/
|
|
5
|
+
var baseReg = /^\d{15}$/;
|
|
20
6
|
function sumCheckCode(preCode) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
pj
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
retNum = 11 - pj;
|
|
38
|
-
}
|
|
39
|
-
return retNum;
|
|
7
|
+
var retNum;
|
|
8
|
+
var pj = 10;
|
|
9
|
+
for (var j = 0; j < 14; j++) {
|
|
10
|
+
var sj = pj + Number(preCode[j]);
|
|
11
|
+
var sj10 = sj % 10;
|
|
12
|
+
sj10 = sj10 === 0 ? 10 : sj10;
|
|
13
|
+
var pj1 = sj10 * 2;
|
|
14
|
+
pj = pj1 % 11;
|
|
15
|
+
}
|
|
16
|
+
if (pj === 1) {
|
|
17
|
+
retNum = 0;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
retNum = 11 - pj;
|
|
21
|
+
}
|
|
22
|
+
return retNum;
|
|
40
23
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
*
|
|
55
|
-
* isBusinessLicense('310115600985533'); // true
|
|
56
|
-
* isBusinessLicense('310115600985535'); // false
|
|
57
|
-
*
|
|
58
|
-
* // 不校验验证码,长度和类型还是有校验
|
|
59
|
-
* isBusinessLicense('310115600985535', { checkCode: false }); // true
|
|
60
|
-
* isBusinessLicense('ac115600985535', { checkCode: false }); // false
|
|
61
|
-
* isBusinessLicense('31011560098', { checkCode: false }); // false
|
|
62
|
-
*
|
|
63
|
-
*/
|
|
64
|
-
function isBusinessLicense(value) {
|
|
65
|
-
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
66
|
-
var valueStr = (0, _normalizeString["default"])(value);
|
|
67
|
-
// @ts-ignore
|
|
68
|
-
// TODO 下个版本废弃 loose
|
|
69
|
-
var _options$loose = options.loose,
|
|
70
|
-
loose = _options$loose === void 0 ? false : _options$loose,
|
|
71
|
-
_options$checkCode = options.checkCode,
|
|
72
|
-
cc = _options$checkCode === void 0 ? true : _options$checkCode;
|
|
73
|
-
var needCheckCode = !loose && cc;
|
|
74
|
-
var passBaseRule = baseReg.test(valueStr);
|
|
75
|
-
|
|
76
|
-
// 宽松模式 或 基础规则不通过直接返回
|
|
77
|
-
if (!needCheckCode || !passBaseRule) {
|
|
78
|
-
return passBaseRule;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// 前14位
|
|
82
|
-
var preCode = valueStr.substring(0, 14);
|
|
83
|
-
// 校验码
|
|
84
|
-
var lastCode = valueStr.substring(valueStr.length - 1);
|
|
85
|
-
// 计算校验码
|
|
86
|
-
var checkCode = sumCheckCode(preCode);
|
|
87
|
-
return lastCode === String(checkCode);
|
|
24
|
+
function isBusinessLicense(value, options) {
|
|
25
|
+
if (options === void 0) { options = {}; }
|
|
26
|
+
var valueStr = normalizeString(value);
|
|
27
|
+
var _a = options.loose, loose = _a === void 0 ? false : _a, _b = options.checkCode, cc = _b === void 0 ? true : _b;
|
|
28
|
+
var needCheckCode = !loose && cc;
|
|
29
|
+
var passBaseRule = baseReg.test(valueStr);
|
|
30
|
+
if (!needCheckCode || !passBaseRule) {
|
|
31
|
+
return passBaseRule;
|
|
32
|
+
}
|
|
33
|
+
var preCode = valueStr.substring(0, 14);
|
|
34
|
+
var lastCode = valueStr.substring(valueStr.length - 1);
|
|
35
|
+
var checkCode = sumCheckCode(preCode);
|
|
36
|
+
return lastCode === String(checkCode);
|
|
88
37
|
}
|
|
89
|
-
|
|
90
|
-
exports
|
|
38
|
+
|
|
39
|
+
module.exports = isBusinessLicense;
|
package/lib/isChinese.js
CHANGED
|
@@ -1,83 +1,34 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var normalizeString = require('./normalizeString.js');
|
|
2
4
|
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
var _normalizeString = _interopRequireDefault(require("./normalizeString"));
|
|
8
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
9
5
|
var chineseDictionary = {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
// 汉字扩展C
|
|
19
|
-
chineseExtendC: "[\uD869\uDF00-\uD86D\uDF34]",
|
|
20
|
-
// 汉字扩展D
|
|
21
|
-
chineseExtendD: "[\uD86D\uDF40-\uD86E\uDC1D]",
|
|
22
|
-
// 汉字扩展E
|
|
23
|
-
chineseExtendE: "[\uD86E\uDC20-\uD873\uDEA1]",
|
|
24
|
-
// 汉字扩展F
|
|
25
|
-
chineseExtendF: "[\uD873\uDEB0-\uD87A\uDFE0]"
|
|
6
|
+
chineseBasic: '[\u4e00-\u9fa5]',
|
|
7
|
+
chineseExtend: '[\u9ea6-\u9fef]',
|
|
8
|
+
chineseExtendA: '[\u3400-\u4DB5]',
|
|
9
|
+
chineseExtendB: "[\uD840\uDC00-\uD869\uDED6]",
|
|
10
|
+
chineseExtendC: "[\uD869\uDF00-\uD86D\uDF34]",
|
|
11
|
+
chineseExtendD: "[\uD86D\uDF40-\uD86E\uDC1D]",
|
|
12
|
+
chineseExtendE: "[\uD86E\uDC20-\uD873\uDEA1]",
|
|
13
|
+
chineseExtendF: "[\uD873\uDEB0-\uD87A\uDFE0]"
|
|
26
14
|
};
|
|
27
15
|
var looseChineseRegExp = chineseDictionary.chineseBasic + '+';
|
|
28
16
|
var chineseRegExp = '^' + chineseDictionary.chineseBasic + '+$';
|
|
29
17
|
var chineseWithExtend = '(?:' + chineseDictionary.chineseBasic + '|' + chineseDictionary.chineseExtend + '|' + chineseDictionary.chineseExtendA + '|' + chineseDictionary.chineseExtendB + '|' + chineseDictionary.chineseExtendC + '|' + chineseDictionary.chineseExtendD + '|' + chineseDictionary.chineseExtendE + '|' + chineseDictionary.chineseExtendF + ')';
|
|
30
18
|
var looseChineseExtendRegExp = chineseWithExtend + '+';
|
|
31
19
|
var chineseExtendRegExp = '^' + chineseWithExtend + '+$';
|
|
32
|
-
|
|
33
|
-
// eslint-disable-next-line no-prototype-builtins
|
|
34
20
|
var supportRegExpUnicode = RegExp.prototype.hasOwnProperty('unicode');
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
* @param {Object} [options] 配置项
|
|
47
|
-
* @param {boolean} [options.loose=false] 宽松模式。如果为true,只要包含中文即为true
|
|
48
|
-
* @param {boolean} [options.useExtend=false] 使用统一表意文字扩展A-F。注意:如果不支持 `RegExp.prototype.unicode`,扩展字符集将自动不生效,如IE浏览器。
|
|
49
|
-
* @returns {boolean} 值是否为中文
|
|
50
|
-
* @example
|
|
51
|
-
*
|
|
52
|
-
* isChinese('林某某'); // true
|
|
53
|
-
* isChinese('林A'); // false
|
|
54
|
-
*
|
|
55
|
-
* // 宽松模式,只要包含中文即为true
|
|
56
|
-
* isChinese('林A', { loose: true }); // true
|
|
57
|
-
* isChinese('A林A', { loose: true }); // true
|
|
58
|
-
*
|
|
59
|
-
* // 扩展字符集的字符
|
|
60
|
-
* isChinese('𠮷'); // false
|
|
61
|
-
*
|
|
62
|
-
* // 使用中文扩展字符集,需要浏览器支持 RegExp.prototype.unicode 才生效。
|
|
63
|
-
* isChinese('𠮷', { useExtend: true }); // true
|
|
64
|
-
* isChinese('𠮷aa', { useExtend: true, loose: true }); // true
|
|
65
|
-
*
|
|
66
|
-
*/
|
|
67
|
-
function isChinese(value) {
|
|
68
|
-
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
69
|
-
var _options$loose = options.loose,
|
|
70
|
-
loose = _options$loose === void 0 ? false : _options$loose,
|
|
71
|
-
_options$useExtend = options.useExtend,
|
|
72
|
-
useExtend = _options$useExtend === void 0 ? false : _options$useExtend;
|
|
73
|
-
var valueStr = (0, _normalizeString["default"])(value);
|
|
74
|
-
var basicRegExp = loose ? looseChineseRegExp : chineseRegExp;
|
|
75
|
-
var extendRegExp = loose ? looseChineseExtendRegExp : chineseExtendRegExp;
|
|
76
|
-
var hasExtend = useExtend && supportRegExpUnicode;
|
|
77
|
-
var resultRegExp = hasExtend ? extendRegExp : basicRegExp;
|
|
78
|
-
var flag = hasExtend ? 'u' : undefined;
|
|
79
|
-
var reg = new RegExp(resultRegExp, flag);
|
|
80
|
-
return reg.test(valueStr);
|
|
21
|
+
function isChinese(value, options) {
|
|
22
|
+
if (options === void 0) { options = {}; }
|
|
23
|
+
var _a = options.loose, loose = _a === void 0 ? false : _a, _b = options.useExtend, useExtend = _b === void 0 ? false : _b;
|
|
24
|
+
var valueStr = normalizeString(value);
|
|
25
|
+
var basicRegExp = loose ? looseChineseRegExp : chineseRegExp;
|
|
26
|
+
var extendRegExp = loose ? looseChineseExtendRegExp : chineseExtendRegExp;
|
|
27
|
+
var hasExtend = useExtend && supportRegExpUnicode;
|
|
28
|
+
var resultRegExp = hasExtend ? extendRegExp : basicRegExp;
|
|
29
|
+
var flag = hasExtend ? 'u' : undefined;
|
|
30
|
+
var reg = new RegExp(resultRegExp, flag);
|
|
31
|
+
return reg.test(valueStr);
|
|
81
32
|
}
|
|
82
|
-
|
|
83
|
-
exports
|
|
33
|
+
|
|
34
|
+
module.exports = isChinese;
|
package/lib/isEmail.js
CHANGED
|
@@ -1,31 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
var _normalizeString = _interopRequireDefault(require("./normalizeString"));
|
|
8
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
9
|
-
// 邮箱
|
|
10
|
-
var reg = /^[\da-z]+([\-\.\_]?[\da-z]+)*@[\da-z]+([\-\.]?[\da-z]+)*(\.[a-z]{2,})+$/i;
|
|
3
|
+
var normalizeString = require('./normalizeString.js');
|
|
11
4
|
|
|
12
|
-
|
|
13
|
-
* 检测值是否为Email
|
|
14
|
-
*
|
|
15
|
-
* @static
|
|
16
|
-
* @alias module:Validator.isEmail
|
|
17
|
-
* @since 1.1.0
|
|
18
|
-
* @param {*} value 要检测的值
|
|
19
|
-
* @returns {boolean} 值是否为Email
|
|
20
|
-
* @example
|
|
21
|
-
*
|
|
22
|
-
* isEmail('1232@qq.com'); // true
|
|
23
|
-
* isEmail('123@'); // false
|
|
24
|
-
*
|
|
25
|
-
*/
|
|
5
|
+
var reg = /^[\da-z]+([-._]?[\da-z]+)*@[\da-z]+([-.]?[\da-z]+)*(\.[a-z]{2,})+$/i;
|
|
26
6
|
function isEmail(value) {
|
|
27
|
-
|
|
28
|
-
|
|
7
|
+
var valueStr = normalizeString(value);
|
|
8
|
+
return reg.test(valueStr);
|
|
29
9
|
}
|
|
30
|
-
|
|
31
|
-
exports
|
|
10
|
+
|
|
11
|
+
module.exports = isEmail;
|
package/lib/isHMCard.js
CHANGED
|
@@ -1,39 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
var _normalizeString = _interopRequireDefault(require("./normalizeString"));
|
|
8
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
9
|
-
// 港澳居民来往内地通行证正则
|
|
10
|
-
var regHMCard = /^[hm]{1}([0-9]{10}|[0-9]{8})$/i;
|
|
3
|
+
var normalizeString = require('./normalizeString.js');
|
|
11
4
|
|
|
12
|
-
|
|
13
|
-
* 检测值是否为港澳居民来往内地通行证,俗称回乡证或回乡卡。
|
|
14
|
-
*
|
|
15
|
-
* @static
|
|
16
|
-
* @alias module:Validator.isHMCard
|
|
17
|
-
* @since 4.0.0
|
|
18
|
-
* @see {@link https://zh.wikipedia.org/wiki/港澳居民来往内地通行证|港澳居民来往内地通行证}
|
|
19
|
-
* @param {*} value 要检测的值
|
|
20
|
-
* @returns {boolean} 是否为港澳居民来往内地通行证
|
|
21
|
-
* @example
|
|
22
|
-
* // 第一代 11 位
|
|
23
|
-
* isHMCard('h3203117707'); // true
|
|
24
|
-
* isHMCard('H3203117707'); // true
|
|
25
|
-
* isHMCard('m3203117707'); // true
|
|
26
|
-
* isHMCard('M3203117707'); // true
|
|
27
|
-
*
|
|
28
|
-
* // 第二代 9 位
|
|
29
|
-
* isHMCard('h32031177'); // true
|
|
30
|
-
* isHMCard('H32031177'); // true
|
|
31
|
-
* isHMCard('m32031177'); // true
|
|
32
|
-
* isHMCard('M32031177'); // true
|
|
33
|
-
*/
|
|
5
|
+
var regHMCard = /^[hm]{1}([0-9]{10}|[0-9]{8})$/i;
|
|
34
6
|
function isHMCard(value) {
|
|
35
|
-
|
|
36
|
-
|
|
7
|
+
var valueStr = normalizeString(value);
|
|
8
|
+
return regHMCard.test(valueStr);
|
|
37
9
|
}
|
|
38
|
-
|
|
39
|
-
exports
|
|
10
|
+
|
|
11
|
+
module.exports = isHMCard;
|
package/lib/isIPv4.js
CHANGED
|
@@ -1,33 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
var _normalizeString = _interopRequireDefault(require("./normalizeString"));
|
|
8
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
9
|
-
// ipv4正则
|
|
10
|
-
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])$/;
|
|
3
|
+
var normalizeString = require('./normalizeString.js');
|
|
11
4
|
|
|
12
|
-
|
|
13
|
-
* 检测值是否为ipv4
|
|
14
|
-
*
|
|
15
|
-
* @static
|
|
16
|
-
* @alias module:Validator.isIPv4
|
|
17
|
-
* @since 1.1.0
|
|
18
|
-
* @param {*} value 要检测的值
|
|
19
|
-
* @returns {boolean} 值是否为ipv4
|
|
20
|
-
* @example
|
|
21
|
-
*
|
|
22
|
-
* isIPv4('192.168.1.1'); // true
|
|
23
|
-
* isIPv4('255.255.255.255'); // true
|
|
24
|
-
* isIPv4('256.256.256.256'); // false
|
|
25
|
-
* isIPv4('0.0'); // false
|
|
26
|
-
*
|
|
27
|
-
*/
|
|
5
|
+
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])$/;
|
|
28
6
|
function isIPv4(value) {
|
|
29
|
-
|
|
30
|
-
|
|
7
|
+
var valueStr = normalizeString(value);
|
|
8
|
+
return reg.test(valueStr);
|
|
31
9
|
}
|
|
32
|
-
|
|
33
|
-
exports
|
|
10
|
+
|
|
11
|
+
module.exports = isIPv4;
|
package/lib/isIPv6.js
CHANGED
|
@@ -1,47 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
var _normalizeString = _interopRequireDefault(require("./normalizeString"));
|
|
8
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
9
|
-
// ipv6正则
|
|
10
|
-
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;
|
|
3
|
+
var normalizeString = require('./normalizeString.js');
|
|
11
4
|
|
|
12
|
-
|
|
13
|
-
* 检测值是否为ipv6
|
|
14
|
-
*
|
|
15
|
-
* @static
|
|
16
|
-
* @alias module:Validator.isIPv6
|
|
17
|
-
* @since 1.1.0
|
|
18
|
-
* @param {*} value 要检测的值
|
|
19
|
-
* @returns {boolean} 值是否为ipv6
|
|
20
|
-
* @example
|
|
21
|
-
*
|
|
22
|
-
* // 冒分十六进制表示法
|
|
23
|
-
* isIPv6('2001:0DB8:0000:0023:0008:0800:200C:417A'); // true
|
|
24
|
-
*
|
|
25
|
-
* // 前导0省略
|
|
26
|
-
* isIPv6('2001:DB8:0:23:8:800:200C:417A'); // true
|
|
27
|
-
* isIPv6('FF01:0:0:0:0:0:0:1101'); // true
|
|
28
|
-
*
|
|
29
|
-
* // 0位压缩表示法
|
|
30
|
-
* isIPv6('FF01::1101'); // true
|
|
31
|
-
* isIPv6('::1'); // true
|
|
32
|
-
* isIPv6('::'); // true
|
|
33
|
-
* isIPv6('0:0:0:0:0:0:0:1'); // true
|
|
34
|
-
* isIPv6('0:0:0:0:0:0:0:0'); // true
|
|
35
|
-
*
|
|
36
|
-
* // 内嵌IPv4地址表示法
|
|
37
|
-
* isIPv6('::192.168.1.1'); // true
|
|
38
|
-
* isIPv6('::FFFF:192.168.1.1'); // true
|
|
39
|
-
* isIPv6('192.168.1.1'); // false
|
|
40
|
-
*
|
|
41
|
-
*/
|
|
5
|
+
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;
|
|
42
6
|
function isIPv6(value) {
|
|
43
|
-
|
|
44
|
-
|
|
7
|
+
var valueStr = normalizeString(value);
|
|
8
|
+
return reg.test(valueStr);
|
|
45
9
|
}
|
|
46
|
-
|
|
47
|
-
exports
|
|
10
|
+
|
|
11
|
+
module.exports = isIPv6;
|
package/lib/isIdCard.js
CHANGED
|
@@ -1,79 +1,35 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
var _normalizeString = _interopRequireDefault(require("./normalizeString"));
|
|
8
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
9
|
-
// 身份证号正则
|
|
10
|
-
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;
|
|
3
|
+
var normalizeString = require('./normalizeString.js');
|
|
11
4
|
|
|
12
|
-
|
|
13
|
-
* 校验码计算
|
|
14
|
-
*
|
|
15
|
-
* @private
|
|
16
|
-
* @param {string} id 身份证号码
|
|
17
|
-
* @returns {boolean} 校验码是否正确
|
|
18
|
-
*/
|
|
5
|
+
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;
|
|
19
6
|
function check(id) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
7
|
+
var index, sum;
|
|
8
|
+
for (sum = index = 0; index < 17; index++) {
|
|
9
|
+
sum += (Math.pow(2, 17 - index) % 11) * Number(id[index]);
|
|
10
|
+
}
|
|
11
|
+
var num = (12 - (sum % 11)) % 11;
|
|
12
|
+
if (num < 10) {
|
|
13
|
+
return num === Number(id[17]);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
return id[17].toUpperCase() === 'X';
|
|
17
|
+
}
|
|
30
18
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
* @since 1.1.0
|
|
38
|
-
* @see {@link https://zh.wikipedia.org/wiki/中华人民共和国公民身份号码|中华人民共和国公民身份号码}
|
|
39
|
-
* @see {@link https://baike.baidu.com/item/居民身份证号码|居民身份证号码}
|
|
40
|
-
* @param {*} value 要检测的值
|
|
41
|
-
* @param {Object} [options] 配置项
|
|
42
|
-
* @param {boolean} [options.loose=false] 宽松模式,支持15位身份证号码
|
|
43
|
-
* @param {boolean} [options.checkCode=true] 是否校验最后一位校验码,仅支持18位身份证号码
|
|
44
|
-
* @returns {boolean} 值是否为身份证号
|
|
45
|
-
* @example
|
|
46
|
-
*
|
|
47
|
-
* isIdCard('130701199310302288'); // true
|
|
48
|
-
* isIdCard('13070119931030228X'); // false
|
|
49
|
-
*
|
|
50
|
-
* // 不校验校验码
|
|
51
|
-
* isIdCard('13070119931030228X', { checkCode: false }); // true
|
|
52
|
-
*
|
|
53
|
-
* // 默认不支持15位身份证号码
|
|
54
|
-
* isIdCard('320311770706001'); // false
|
|
55
|
-
*
|
|
56
|
-
* // 宽松模式,支持15位身份证号
|
|
57
|
-
* isIdCard('320311770706001', { loose: true }); // true
|
|
58
|
-
*
|
|
59
|
-
*/
|
|
60
|
-
function isIdCard(value) {
|
|
61
|
-
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
62
|
-
var _options$loose = options.loose,
|
|
63
|
-
loose = _options$loose === void 0 ? false : _options$loose,
|
|
64
|
-
_options$checkCode = options.checkCode,
|
|
65
|
-
checkCode = _options$checkCode === void 0 ? true : _options$checkCode;
|
|
66
|
-
var valueStr = (0, _normalizeString["default"])(value);
|
|
67
|
-
if (valueStr.length === 15 && loose) {
|
|
68
|
-
return regIdCard.test(valueStr);
|
|
69
|
-
}
|
|
70
|
-
if (valueStr.length === 18 && regIdCard.test(valueStr)) {
|
|
71
|
-
if (checkCode) {
|
|
72
|
-
return check(valueStr);
|
|
19
|
+
function isIdCard(value, options) {
|
|
20
|
+
if (options === void 0) { options = {}; }
|
|
21
|
+
var _a = options.loose, loose = _a === void 0 ? false : _a, _b = options.checkCode, checkCode = _b === void 0 ? true : _b;
|
|
22
|
+
var valueStr = normalizeString(value);
|
|
23
|
+
if (valueStr.length === 15 && loose) {
|
|
24
|
+
return regIdCard.test(valueStr);
|
|
73
25
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
26
|
+
if (valueStr.length === 18 && regIdCard.test(valueStr)) {
|
|
27
|
+
if (checkCode) {
|
|
28
|
+
return check(valueStr);
|
|
29
|
+
}
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
77
33
|
}
|
|
78
|
-
|
|
79
|
-
exports
|
|
34
|
+
|
|
35
|
+
module.exports = isIdCard;
|
package/lib/isMobile.js
CHANGED
|
@@ -1,31 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
var _normalizeString = _interopRequireDefault(require("./normalizeString"));
|
|
8
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
9
|
-
// 手机号码 11位数字,以1开头,第二位是3456789其中一个,后面再加9个数字
|
|
10
|
-
var reg = /^1[3456789]\d{9}$/;
|
|
3
|
+
var normalizeString = require('./normalizeString.js');
|
|
11
4
|
|
|
12
|
-
|
|
13
|
-
* 检测值是否为手机号码
|
|
14
|
-
*
|
|
15
|
-
* @static
|
|
16
|
-
* @alias module:Validator.isMobile
|
|
17
|
-
* @since 1.1.0
|
|
18
|
-
* @param {*} value 要检测的值
|
|
19
|
-
* @returns {boolean} 值是否为手机号码
|
|
20
|
-
* @example
|
|
21
|
-
*
|
|
22
|
-
* isMobile('13000000000'); // true
|
|
23
|
-
* isMobile('13000'); // false
|
|
24
|
-
*
|
|
25
|
-
*/
|
|
5
|
+
var reg = /^1[3456789]\d{9}$/;
|
|
26
6
|
function isMobile(value) {
|
|
27
|
-
|
|
28
|
-
|
|
7
|
+
var valueStr = normalizeString(value);
|
|
8
|
+
return reg.test(valueStr);
|
|
29
9
|
}
|
|
30
|
-
|
|
31
|
-
exports
|
|
10
|
+
|
|
11
|
+
module.exports = isMobile;
|
package/lib/isPassport.js
CHANGED
|
@@ -1,33 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
var _normalizeString = _interopRequireDefault(require("./normalizeString"));
|
|
8
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
9
|
-
// 护照号 9位,包括首字母和数字;支持 普通护照(E*)、外交护照(DE)、公务护照(SE)、公务普通护照(PE)、香港特区护照(K/KJ/H*)、澳门特区护照(MA/MB/M*)
|
|
10
|
-
var reg = /^((e[\da-z])|(de)|(se)|(pe)|([khm][\da-z]))[\da-z]{7}$/i;
|
|
3
|
+
var normalizeString = require('./normalizeString.js');
|
|
11
4
|
|
|
12
|
-
|
|
13
|
-
* 检测值是否为护照号
|
|
14
|
-
* 支持普通护照(E*)、外交护照(DE)、公务护照(SE)、公务普通护照(PE)、香港特区护照(K/KJ/H*)、澳门特区护照(MA/MB/M*),注意不区分大小写
|
|
15
|
-
*
|
|
16
|
-
* @static
|
|
17
|
-
* @alias module:Validator.isPassport
|
|
18
|
-
* @since 1.1.0
|
|
19
|
-
* @see {@link https://zh.wikipedia.org/wiki/中华人民共和国护照#个人资料页|中华人民共和国护照#个人资料页}
|
|
20
|
-
* @param {*} value 要检测的值
|
|
21
|
-
* @returns {boolean} 值是否为护照号
|
|
22
|
-
* @example
|
|
23
|
-
*
|
|
24
|
-
* isPassport('E12345678'); // true
|
|
25
|
-
* isPassport('abc'); // false
|
|
26
|
-
*
|
|
27
|
-
*/
|
|
5
|
+
var reg = /^((e[\da-z])|(de)|(se)|(pe)|([khm][\da-z]))[\da-z]{7}$/i;
|
|
28
6
|
function isPassport(value) {
|
|
29
|
-
|
|
30
|
-
|
|
7
|
+
var valueStr = normalizeString(value);
|
|
8
|
+
return reg.test(valueStr);
|
|
31
9
|
}
|
|
32
|
-
|
|
33
|
-
exports
|
|
10
|
+
|
|
11
|
+
module.exports = isPassport;
|