@planjs/utils
Version:
🔧 Common tools collection
198 lines (167 loc) • 5.72 kB
JavaScript
/**
* 手机号(mobile phone)中国(宽松), 只要是13,14,15,16,17,18,19开头即可
* @category RegExp
*/
export var REG_PHONE_LOOSE = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/;
/**
* 座机(tel phone)
* @category RegExp
*/
export var REG_TEL_PHONE = /^\d{3}-\d{8}$|^\d{4}-\d{7,8}$/;
/**
* email
* @category RegExp
*/
// eslint-disable-next-line
export var REG_EMAIL = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
/**
* 手机机身码(IMEI)
* @category RegExp
*/
export var REG_IMEI = /^\d{15,17}$/;
/**
* 身份证号, 支持1/2代(15位/18位数字)
* @category RegExp
*/
export var REG_ID_CARD = /(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0[1-9]|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/;
/**
* 必须带端口号的网址(或ip)
* @category RegExp
*/
export var REG_URI_WITH_PORT = /^((ht|f)tps?:\/\/)?[\w-]+(\.[\w-]+)+:\d{1,5}\/?$/;
/**
* 网址(url,支持端口和"?+参数"和"#+参数)
* @note 没有协议也会校验通过
* @category RegExp
*/
// eslint-disable-next-line
export var REG_URI_LOSE = /^(((ht|f)tps?):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?$/;
/**
* 网址校验,必须带有协议,或者相对协议
* @category RegExp
*/
export var REG_URI = new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$", 'i');
/**
* 子网掩码
* @category RegExp
*/
export var REG_SUBNET_MASK = /^(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(?:\.(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3}$/;
/**
* md5 32
* @category RegExp
*/
export var REG_MD532 = /^([a-f\d]{32}|[A-F\d]{32})$/;
/**
* version x.y.z
* @category RegExp
*/
export var REG_VERSION = /^\d+(?:\.\d+){2}$/;
/**
* linux文件夹路径
* @category RegExp
*/
// eslint-disable-next-line
export var REG_LINUX_FOLDER_PATH = /^\/(?:[^\/]+\/)*$/;
/**
* linux文件路径
* @category RegExp
*/
// eslint-disable-next-line
export var REG_LINUX_FILE_PATH = /^\/(?:[^\/]+\/)*[^\/]+$/;
/**
* window"文件夹"路径
* @category RegExp
*/
export var REG_WINDOWS_FOLDER_PATH = /^[a-zA-Z]:\\(?:\w+\\?)*$/;
/**
* window下"文件"路径
* @category RegExp
*/
export var REG_WINDOWS_FILE_PATH = /^[a-zA-Z]:\\(?:\w+\\)*\w+\.\w+$/;
/**
* 银行卡号
* 10到30位, 覆盖对公/私账户, 参考 https://pay.weixin.qq.com/wiki/doc/api/xiaowei.php?chapter=22_1
* @category RegExp
*/
export var REG_BANK_CARD_NUM = /^[1-9]\d{9,29}$/;
/**
* 匹配中文
* @category RegExp
*/
export var REG_CN = /[\u4e00-\u9fa5]$/;
/**
* 不包含中文
* @category RegExp
*/
export var REG_NO_CN = /[^\u00-\uFF]/;
/**
* 匹配英文
* @category RegExp
*/
export var REG_EN = /[a-zA-Z]$/;
/**
* 中文名
* @category RegExp
*/
export var REG_CN_NAME = /^(?:[\u4e00-\u9fa5·]{2,16})$/;
/**
* 英文名
* @category RegExp
*/
export var REG_EN_NAME = /(^[a-zA-Z]{1}[a-zA-Z\s]{0,20}[a-zA-Z]{1}$)/;
/**
* 统一社会信用代码
* @category RegExp
*/
export var REG_UNIFIED_SOCIAL_CREDIT_CODE = /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/;
/**
* 小数
* @category RegExp
*/
export var REG_DECIMAL = /^\d+\.\d+$/;
/**
* 数字
* @category RegExp
*/
export var REG_NUMBER = /^\d{1,}$/;
/**
* 英文字母
* @category RegExp
*/
export var REG_ENGLISH = /^[a-zA-Z]+$/;
/**
* ip-v4
* @category RegExp
*/
export var REG_IPV4 = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
/**
* ip-v6
* @category RegExp
*/
export var REG_IPV6 = /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i;
/**
* 16进制颜色
* @category RegExp
*/
export var REG_HEX_COLOR = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;
/**
* 颜色16进制颜色,rgb或rgba
* @category RegExp
*/
export var REG_COLOR = /^(#([0-9a-fA-F]{3}){1,2}|[rR][gG][Bb](\((\s*(2[0-4]\d|25[0-5]|[01]?\d{1,2})\s*,){2}\s*(2[0-4]\d|25[0-5]|[01]?\d{1,2})\s*\)|[Aa]\((\s*(2[0-4]\d|25[0-5]|[01]?\d{1,2})\s*,){3}\s*([01]|0\.\d+)\s*\)))$/;
/**
* 邮政编码(中国)
* @category RegExp
*/
export var REG_POSTAL_CODEi = /^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\d{4}$/;
/**
* 判断是否是base64
* @category RegExp
*/
export var REG_BASE64 = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;
/**
* 判断是否data url
* @category RegExp
*/
// eslint-disable-next-line
export var REG_DATA_URL = /^\s*data:([a-z]+\/[a-z]+(;[a-z\-]+\=[a-z\-]+)?)?(;base64)?,[a-z0-9\!\$\&\'\,\(\)\*\+\,\;\=\-\.\_\~\:\@\/\?\%\s]*\s*$/i;