UNPKG

arayts

Version:

让 TypeScript 开发如丝般顺滑。ArayTS 提供了一套高效、优雅的算法工具集,包含常用的数据结构与算法实现,帮助开发者轻松构建可靠的应用程序。

95 lines (94 loc) 3.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Phone = exports.Email = void 0; // src/emailValidator.ts var Email = function (email, domains) { // 验证邮箱格式 var emailFormatRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; try { if (!emailFormatRegex.test(email)) { return false; } // 如果传递了域名,验证域名是否匹配 if (domains) { if (typeof domains === 'string') { domains = [domains]; } var emailDomain = email.split('@')[1]; return domains.includes(emailDomain); } return true; // 如果没有传递域名,只验证邮箱格式 } catch (e) { console.log(e); return false; } }; exports.Email = Email; var PhoneNumberValidator = /** @class */ (function () { function PhoneNumberValidator() { } PhoneNumberValidator.isValid = function (phoneNumber, regions) { var _this = this; try { if (regions) { if (typeof regions === 'string') { regions = [regions]; } // 匹配指定国家地区 var selectedPatterns = regions.map(function (region) { return _this.patterns[region]; }).filter(Boolean); return selectedPatterns.some(function (pattern) { return pattern.test(phoneNumber); }); } else { return this.patterns['zh-CN'].test(phoneNumber); } } catch (e) { console.log(e); return false; } }; PhoneNumberValidator.patterns = { 'zh-CN': /^(\+?0?86-?)?1[345789]\d{9}$/, 'en-hk': /^(\+?0?852-?)([6|9])\d{7}$/, 'zh-TW': /^(\+?886-?|0)?9\d{8}$/, 'ar-DZ': /^(\+?213|0)[567]\d{8}$/, 'ar-SY': /^(!?(\+?963)|0)?9\d{8}$/, 'ar-SA': /^(!?(\+?966)|0)?5\d{8}$/, 'en-US': /^(\+?1)?[2-9]\d{2}[2-9](?!11)\d{6}$/, 'cs-CZ': /^(\+?420)? ?[1-9]\d{2} ?\d{3} ?\d{3}$/, 'de-DE': /^(\+?49[ .-])?(\(\d{1,6}\))?[\d ./-]{3,20}(?:x|ext|extension?\d{1,4})?$/, 'da-DK': /^(\+?45)?(\d{8})$/, 'el-GR': /^(\+?30)?(69\d{8})$/, 'en-AU': /^(\+?61|0)4\d{8}$/, 'en-GB': /^(\+?44|0)7\d{9}$/, 'en-HK': /^(\+?852-?)?[569]\d{3}-?\d{4}$/, 'en-IN': /^(\+?91|0)?[789]\d{9}$/, 'en-NZ': /^(\+?64|0)2\d{7,9}$/, 'en-ZA': /^(\+?27|0)\d{9}$/, 'en-ZM': /^(\+?26)?09[567]\d{7}$/, 'es-ES': /^(\+?34)?(6\d|7[1234])\d{7}$/, 'fi-FI': /^(\+?358|0)\s?(4(01245)?|50)\s?(\d\s?){4,8}\d$/, 'fr-FR': /^(\+?33|0)[67]\d{8}$/, 'he-IL': /^(\+972|0)([23489]|5[0248]|77)[1-9]\d{6}/, 'hu-HU': /^(\+?36)(20|30|70)\d{7}$/, 'it-IT': /^(\+?39)?\s?3\d{2} ?\d{6,7}$/, 'ja-JP': /^(\+?81|0)\d{1,4}[ -]?\d{1,4}[ -]?\d{4}$/, 'ms-MY': /^(\+?6?01)([145](?:-|\s)?\d{7,8}|[236789](?:\s|-)?\d{7})$/, 'nb-NO': /^(\+?47)?[49]\d{7}$/, 'nl-BE': /^(\+?32|0)4?\d{8}$/, 'nn-NO': /^(\+?47)?[49]\d{7}$/, 'pl-PL': /^(\+?48)? ?[5-8]\d ?\d{3} ?\d{2} ?\d{2}$/, 'pt-BR': /^(\+?55|0)-?[1-9]{2}-?[2-9]\d{3,4}-?\d{4}$/, 'pt-PT': /^(\+?351)?9[1236]\d{7}$/, 'ru-RU': /^(\+?7|8)?9\d{9}$/, 'sr-RS': /^(\+3816|06)[- \d]{5,9}$/, 'tr-TR': /^(\+?90|0)?5\d{9}$/, 'vi-VN': /^(\+?84|0)?((1(2(\d)|6([2-9])|88|99))|(9((?!5)\d)))(\d{7})$/, }; return PhoneNumberValidator; }()); var Phone = function (email, domains) { return PhoneNumberValidator.isValid(email, domains); }; exports.Phone = Phone;