小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
合法url
export function validateURL(textval) {
const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
return urlregex.test(textval)
}
path
/**
* @param {string} path
* @returns {Boolean}
*/
export function isExternal(path) {
return /^(https?:|mailto:|tel:)/.test(path)
}
小写字母
export function validateLowerCase(str) {
const reg = /^[a-z]+$/
return reg.test(str)
}
大写字母
export function validateUpperCase(str) {
const reg = /^[A-Z]+$/
return reg.test(str)
}
大小写字母
export function validatAlphabets(str) {
const reg = /^[A-Za-z]+$/
return reg.test(str)
}
/**
* @param {string}
* @returns {Boolean}
*/
export function validEmail(email) {
const reg = /^(([^<>()\[\]\\.,;:\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,}))$/
return reg.test(email)
}
合法IP地址
/**
* 是否合法IP地址
* @param rule
* @param value
* @param callback
*/
export function validateIP(rule, value, callback) {
if (value === '' || value === undefined || value == null) {
callback()
} else {
const reg = /^(\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])$/
if ((!reg.test(value)) && value !== '') {
callback(new Error('请输入正确的IP地址'))
} else {
callback()
}
}
}
是否手机号码
export function validatePhone(rule, value, callback) {
const reg = /^1([38][0-9]|4[014-9]|[59][0-35-9]|6[2567]|7[0-8])\d{8}$/
if (value === '' || value === undefined || value == null) {
callback()
} else {
if ((!reg.test(value)) && value !== '') {
callback(new Error('请输入正确的电话号码'))
} else {
callback()
}
}
}
是否手机号码或者固话
export function validatePhoneTwo(rule, value, callback) {
const reg = /^((0\d{2,3}-\d{7,8})|(1([38][0-9]|4[014-9]|[59][0-35-9]|6[2567]|7[0-8])\d{8}))$/
if (value === '' || value === undefined || value == null) {
callback()
} else {
if ((!reg.test(value)) && value !== '') {
callback(new Error('请输入正确的电话号码或者固话号码'))
} else {
callback()
}
}
}
Str
/**
* @param {string} str
* @returns {Boolean}
*/
export function isString(str) {
if (typeof str === 'string' || str instanceof String) {
return true
}
return false
}
Array
/**
* @param {Array} arg
* @returns {Boolean}
*/
export function isArray(arg) {
if (typeof Array.isArray === 'undefined') {
return Object.prototype.toString.call(arg) === '[object Array]'
}
return Array.isArray(arg)
}
是否身份证号码
export function validateIdNo(rule, value, callback) {
const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
if (value === '' || value === undefined || value == null) {
callback()
} else {
if ((!reg.test(value)) && value !== '') {
callback(new Error('请输入正确的身份证号码'))
} else {
callback()
}
}
}
是否固话
export function validateTelephone(rule, value, callback) {
const reg = /0\d{2}-\d{7,8}/
if (value === '' || value === undefined || value == null) {
callback()
} else {
if ((!reg.test(value)) && value !== '') {
callback(new Error('请输入正确的固话(格式:区号+号码,如010-1234567)'))
} else {
callback()
}
}
}
座机号(固话)
export function landlineTelephone(rule, value, callback) {
let fixed = /^[0-9]{7,8}$/;
// let fixed = /(^(0\d{2})-(\d{8})$)|(^(0\d{3})-(\d{7})$)|(^(0\d{2})-(\d{8})-(\d+)$)|(^(0\d{3})-(\d{7})-(\d+)$)|(^\d{7}$)|(^\d{8}$)/;
if (value === "") {
callback();
} else if (!fixed.test(value)) {
callback(new Error("座机号格式错误"));
} else {
callback();
}
};
分机号
export function fenjiNumberCheck(rule, value, callback) {
let fenji = /^[0-9]{1,6}$/;
if (value === '') {
callback();
} else if (!fenji.test(value)) {
callback(new Error("分机号格式错误"));
} else {
callback();
}
};
区号正则
export function checkQuhao(rule, value, callback) {
let isQuhaoPhone = /0\d{2,3}/;
if (value === "") {
callback(new Error("区号不能为空"));
} else if (!isQuhaoPhone.test(value)) {
callback(new Error("区号格式错误"));
} else {
callback();
}
};
请输入正整数,可以保留两位小数
export function validateMoney(rule, value, callback) {
let reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;
// 可以保留两位小数 是整数
// console.log('money', value);
if (!value) {
callback();
} else if (!reg.test(value)) {
callback(new Error("请输入正整数,可以保留两位小数"));
}
};
输入有效金额,可以保留2位小数
export function validateAmount(rule, value, callback) {
// 可以为0的金额
var isNum = /^(([1-9]\d*)|0)(\.\d{1,2})?$/;
if (!isNum.test(value)) {
callback(new Error("请输入有效金额"));
} else {
callback();
}
};
请填写正整数或零
export function validatorStock(rule, value, callback) {
if (value != "") {
var reg = /^([0]|[1-9][0-9]*)$/
if (reg.test(value) == false) {
callback(new Error("请填写正整数或零"));
} else {
callback();
}
} else {
callback();
}
}
登录账号
export function accountName(rule, value, callback) {
if (value !== "") {
// ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[A-Za-z0-9]{4,10}$
var reg = /(?![0-9A-Z]+$)(?![0-9a-z]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{3,20}$/; //校验密码3-20位
if (reg.test(value) == false) {
callback(new Error("登录账号必须包含数字、大小写字母,且位数为3-20位"));
} else {
callback();
}
}
}
登录密码
export function checkPassword(rule, value, callback) {
if (value !== "") {
var phoneTest = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/; //校验密码6-20位
if (phoneTest.test(value) == false) {
callback(new Error("密码须包含数字、字母两种元素,且密码位数为6-20位"));
} else {
callback();
}
}
}