@ivujs/i-utils
Version:
前端模块化 JavaScript 工具库
77 lines (74 loc) • 3.45 kB
JavaScript
;
/**
* 正则表达式相关常量配置(全局只读)
*
* CH: 中文汉字
* EN: 英文字母
* LOWER_CASE: 小写字母
* UPPER_CASE: 大写字母
* CH_NAME: 中文姓名(2-16位)
* EN_NAME: 英文姓名(1-20位)
* NUMBER: 数字(包含正数和负数)
* INTEGER: 整数(包含:0,正整数和负整数)
* DECIMAL: 小数(包含正小数和负小数)
* INT_OR_FLOAT: 正整数或者保留两位小数
* MOBILE: 手机号码(支持+86)
* PHONE: 固定电话号码(比如:0755-1111111)
* EMAIL: 邮箱
* ID_CARD: 一代15位或二代18位身份证
* ID_CARD15: 仅校验一代15位身份证
* ID_CARD18: 仅校验二代18位身份证
* BANK_CARD: 银行卡号
* POST_CODE: 邮政编码
* URL: url地址(可获取主机地址、主机名、端口号、协议、查询参数、hash等信息)
* IP: ip地址
* IP6: IPv6地址
* EXTERNAL: 外链(http、https、mail、tel电话)
*/
const REGEXP = {
// 中文汉字
CH: /^[\u4E00-\u9FA5]+$/,
// 英文字母,1个以上
EN: /^[a-zA-Z]+$/,
// 小写字母
LOWER_CASE: /^[a-z]+$/,
// 大写字母
UPPER_CASE: /^[A-Z]+$/,
// 中文姓名,2-16位(支持少数民族姓名间隔符「·」)
CH_NAME: /^[\u4e00-\u9fa5·]{2,16}$/,
// 英文姓名,1-20位
EN_NAME: /^[a-zA-Z\s]{1,20}$/,
// 数字,包含正数和负数
NUMBER: /^([-+])?\d+(\.\d+)?$/,
// 整数,包含:0,正整数和负整数
INTEGER: /^(0|[1-9][0-9]*|-[1-9][0-9]*)$/,
// 小数,包含正小数和负小数
DECIMAL: /^([-+])?\d+\.\d+$/,
// 正整数或者保留两位小数
INT_OR_FLOAT: /(^[1-9][0-9]*$)|(^[1-9][0-9]*\.[0-9]{1,2}$)|(^0\.[0-9]{1,2}$)|(^0$)/,
// 手机号码,支持+86
MOBILE: /^(?:(?:\+|00)86)?1[1-9]\d{9}$/,
// 固定电话号码,比如:0755-1111111
PHONE: /^(?:(?:\d{3}-)?\d{8}|^(?:\d{4}-)?\d{7,8})(?:-\d+)?$/,
// 邮箱
EMAIL: /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/,
// 一代15位或二代18位身份证
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)$)/,
// 仅校验一代15位身份证
ID_CARD15: /(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)/,
// 仅校验二代18位身份证
ID_CARD18: /(^\d{6}(18|19|20)\d{2}(0[1-9]|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/,
// 银行卡号
BANK_CARD: /^[1-9]\d{9,29}$/,
// 邮政编码
POST_CODE: /^(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}$/,
// url地址,可以获取到主机地址、主机名、端口号、协议、查询参数、hash等信息c
URL: /^(?:(ftp|https?|ftps):\/\/)?((?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+(?:[a-zA-Z]{2,6})?)?(?::(\d+))?(?:\/([^\?#]*))?(?:\?([^#]*))?(?:#(.*))?$/,
// ip地址
IP: /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
// IPv6地址
IP6: /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[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}::([0-9a-fA-F]{1,4}:){0,5}[0-9a-fA-F]{1,4})$/i,
// 是外链,http,https,mail,tel电话
EXTERNAL: /^(http:|https:|ftp:|ftps:|mailto:|tel:)/i,
};
exports.REGEXP = REGEXP;