ebike-plus-ui/src/utils/verify-tools.ts

238 lines
7.6 KiB
TypeScript
Raw Normal View History

/**
*
* 2
* @param {string} val
* @returns {string}
*/
export const verifyNumberIntegerAndFloat = (val: string): string => {
// 匹配空格
let v = val.replace(/(^\s*)|(\s*$)/g, "");
// 只能是数字和小数点,不能是其他输入
v = v.replace(/[^\d.]/g, "");
// 以0开始只能输入一个
v = v.replace(/^0{2}$/g, "0");
// 保证第一位只能是数字,不能是点
v = v.replace(/^\./g, "");
// 小数只能出现1位
v = v.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
// 小数点后面保留2位
v = v.replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3");
// 返回结果
return v;
};
/**
*
*
* @param {string} val
* @returns {string}
*/
export const verifiyNumberInteger = (val: string): string => {
// 匹配空格
let v = val.replace(/(^\s*)|(\s*$)/g, "");
// 去掉 '.' , 防止贴贴的时候出现问题 如 0.1.12.12
v = v.replace(/[\.]*/g, "");
// 去掉以 0 开始后面的数, 防止贴贴的时候出现问题 如 00121323
v = v.replace(/(^0[\d]*)$/g, "0");
// 首位是0,只能出现一次
v = v.replace(/^0\d$/g, "0");
// 只匹配数字
v = v.replace(/[^\d]/g, "");
// 返回结果
return v;
};
/**
*
* @param {string} val
* @returns {boolean} true:
*/
export const verifyPhone = (val: string): boolean => {
// false: 手机号码不正确
if (!/^((12[0-9])|(13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0|1,5-9]))\d{8}$/.test(val)) return false;
// true: 手机号码正确
else return true;
};
/**
*
* @param {string} val
* @returns {boolean} true:
*/
export const verifyTelPhone = (val: string): boolean => {
// false: 国内电话号码不正确
if (!/\d{3}-\d{8}|\d{4}-\d{7}/.test(val)) return false;
// true: 国内电话号码正确
else return true;
};
/**
* (5-16线)
* @param {string} val
* @returns {boolean} true:
*/
export const verifyAccount = (val: string): boolean => {
// false: 登录账号不正确
if (!/^[a-zA-Z][a-zA-Z0-9_]{4,15}$/.test(val)) return false;
// true: 登录账号正确
else return true;
};
/**
* (6~16线)
* @param {string} val
* @returns {boolean} true:
*/
export const verifyPassword = (val: string): boolean => {
// false: 密码不正确
if (!/^[a-zA-Z]\w{5,15}$/.test(val)) return false;
// true: 密码正确
else return true;
};
/**
* (++6-16)
* @param {string} val
* @returns {boolean} true:
*/
export const verifyPasswordPowerful = (val: string): boolean => {
// false: 强密码不正确
if (
!/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(
val
)
)
return false;
// true: 强密码正确
else return true;
};
/**
*
* @param {string} val
* @description
* @description +++
* @description ++
* @returns {string}
*/
export const verifyPasswordStrength = (val: string): string => {
let v = "";
// 弱:纯数字,纯字母,纯特殊字符
if (/^(?:\d+|[a-zA-Z]+|[!@#$%^&\.*]+){6,16}$/.test(val)) v = "弱";
// 中:字母+数字,字母+特殊字符,数字+特殊字符
if (/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(val)) v = "中";
// 强:字母+数字+特殊字符
if (
/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(
val
)
)
v = "强";
// 返回结果
return v;
};
/**
* IP地址是否正确
* @param {string} val
* @returns {boolean} true: IP地址正确
*/
export const verifyIPAddress = (val: string): boolean => {
// false: IP地址不正确
if (
!/^(\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])\.(\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])$/.test(
val
)
)
return false;
// true: IP地址正确
else return true;
};
/**
*
* @param {string} val
* @returns {boolean} true:
*/
export const verifyEmail = (val: string): boolean => {
// false: 邮箱不正确
if (
!/^(([^<>()\[\]\\.,;:\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,}))$/.test(
val
)
)
return false;
// true: 邮箱正确
else return true;
};
/**
*
* @param {string} val
* @returns {boolean} true:
*/
export const verifyIdCard = (val: string): boolean => {
// false: 身份证不正确
if (!/^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(val)) return false;
// true: 身份证正确
else return true;
};
/**
*
* @param {string} val
* @returns {boolean} true:
*/
export const verifyFullName = (val: string): boolean => {
// false: 姓名不正确
if (!/^[\u4e00-\u9fa5]{1,6}(·[\u4e00-\u9fa5]{1,6}){0,2}$/.test(val)) return false;
// true: 姓名正确
else return true;
};
/**
*
* @param {string} val
* @returns {boolean} true:
*/
export const verifyPostalCode = (val: string): boolean => {
// false: 邮政编码不正确
if (!/^[1-9][0-9]{5}$/.test(val)) return false;
// true: 邮政编码正确
else return true;
};
/**
* url正确性验证
* @param {string} val
* @returns {boolean} true: url
*/
export const verifyUrl = (val: string): boolean => {
// false: url不正确
if (
!/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-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,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(
val
)
)
return false;
// true: url正确
else return true;
};
/**
*
* @param {string} val
* @returns {boolean} true
*/
export const verifyCarNum = (val: string): boolean => {
// false: 车牌号不正确
if (
!/^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$/.test(
val
)
)
return false;
// true车牌号正确
else return true;
};