// 數字、大寫字母或-_/ => 1~20
var idReg = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^[A-Z0-9-_/]{1,20}$/
if (!reg.test(value)) {
callback(new Error('必須由數字、大寫字母或-_/組成'))
} else {
callback()
}
} else {
callback()
}
}
// 數字、大寫字母或-_ => 1~20
var idRegNew = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^[A-Z0-9-_]{1,20}$/
if (!reg.test(value)) {
callback(new Error('必須由數字、大寫字母或-_組成'))
} else {
callback()
}
} else {
callback()
}
}
// 必須有大寫字母組成
var rthReg = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^[A-Z]+$/
if (!reg.test(value)) {
callback(new Error('必須由大寫字母組成'))
} else {
callback()
}
} else {
callback()
}
}
// 數字、大寫字母或- => 1~20
var idRegNews = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^[A-Z0-9-]{1,10}$/
if (!reg.test(value)) {
callback(new Error('必須由數字、大寫字母或-組成'))
} else {
callback()
}
} else {
callback()
}
}
// 大寫字母或- => 1~20
var idRegNewTwe = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^[A-Z-]{1,20}$/
if (!reg.test(value)) {
callback(new Error('必須由大寫字母或-組成'))
} else {
callback()
}
} else {
callback()
}
}
// 數字、字母 => *
var maxENReg = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^[A-Za-z0-9]*$/
if (!reg.test(value)) {
callback(new Error('必須由數字或字母組成'))
} else {
callback()
}
} else {
callback()
}
}
// 2位大寫字母/數字 => 2
var ndENReg = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^[A-Z0-9]{2}$/
if (!reg.test(value)) {
callback(new Error('必須由2位大寫字母或數字'))
} else {
callback()
}
} else {
callback()
}
}
// 3位大寫字母/數字 => 3
var rdENReg = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^[A-Z0-9]{3}$/
if (!reg.test(value)) {
callback(new Error('必須由3位大寫字母或者數字組成'))
} else {
callback()
}
} else {
callback()
}
}
// 3位大寫字母 => 3
var rdEReg = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^[A-Z]{3}$/
if (!reg.test(value)) {
callback(new Error('必須由3位大寫字母組成'))
} else {
callback()
}
} else {
callback()
}
}
// 4位大寫字母 => 4
var rthEReg = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^[A-Z]{4}$/
if (!reg.test(value)) {
callback(new Error('必須由4位大寫字母組成'))
} else {
callback()
}
} else {
callback()
}
}
// 5的倍數的正整數
var fiveMultiple = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^5|([1-9]\d{0,}(0|5))$/
if (!reg.test(value)) {
callback(new Error('必須是正整數且是5的倍數組成'))
} else {
callback()
}
} else {
callback()
}
}
// 數字 => *
var idNumReg = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^[0-9]*$/
if (!reg.test(value)) {
callback(new Error('必須由純數字組成'))
} else {
callback()
}
} else {
callback()
}
}
// 數字 => *
var phoneReg = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^(\d{3}-\d{8}|\d{4}-\d{7,8}|((1[3,5,8][0-9])|(14[1,5,6,7,8])|(16[6,7])|(17[0,1,4,5,6,7,8])|(19[1,7,8,9]))(-)?\d{4}(-)?\d{4})?$/
if (!reg.test(value)) {
callback(new Error('該号碼格式或位數有誤'))
} else {
callback()
}
} else {
callback()
}
}
// ±9999999.99之間 => 1~11
var sevDotTwoDigit = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^[0-9]{1,7}(\.([0-9]{1,2}))?$/
if (!reg.test(value)) {
callback(new Error('必須在0~9999999.99之間'))
} else {
callback()
}
} else {
callback()
}
}
// ±99999.99之間
var fiveDotTwoDigit = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^-?[0-9]{1,5}(\.([0-9]{1,2}))?$/
if (!reg.test(value)) {
callback(new Error('必須在[-99999.99, 99999.99]之間'))
} else {
callback()
}
} else {
callback()
}
}
// 0~9999999.99之間 => 1~13
var sixDotTwoDigit = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^((\d{1})|([1-9]{1}\d{1,6})){1}(\.\d{1,2})?$/
if (!reg.test(value)) {
callback(new Error('必須在[0,9999999.99]之間'))
} else {
callback()
}
} else {
callback()
}
}
// 0~99999.99之間
var fivePositiveDotTwo = (rule, value, callback) => {
if (value != '' && value != null) {
if (value == 0) {
callback(new Error('必須在(0,99999.99]之間'))
} else {
const reg = /^((\d{1})|([1-9]{1}\d{1,4})){1}(\.\d{1,2})?$/
if (!reg.test(value)) {
callback(new Error('必須在(0,99999.99]之間'))
} else {
callback()
}
}
} else {
callback()
}
}
// 0~999.99之間
var threeDotTwoDigit = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^((\d{1})|([1-9]{1}\d{1,2})){1}(\.\d{1,2})?$/
if (!reg.test(value)) {
callback(new Error('必須在[0,999.99]之間'))
} else {
callback()
}
} else {
callback()
}
}
// 3位正整數 => 0~3
var threeD = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^([1-9]\d{0,2})?$/
if (!reg.test(value)) {
callback(new Error('必須由0-3位正整數組成'))
} else {
callback()
}
} else {
callback()
}
}
// 5位正整數
var fiveD = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^([1-9]\d{0,4})?$/
if (!reg.test(value)) {
callback(new Error('必須由0-5位正整數組成'))
} else {
callback()
}
} else {
callback()
}
}
// 正整數
var mustD = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^\d+$/
if (!reg.test(value)) {
callback(new Error('必須由正整數組成'))
} else {
callback()
}
} else {
callback()
}
}
// 0~360° => 3
var degreePos = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^(([0-9]{1})|([1-9]{1}[0-9]{1})|([1-2]{1}[0-9]{2})|([3]{1}[0-5]{1}[0-9]{1})){1}(\.\d{1,4})?$/
if (!reg.test(value)) {
callback(new Error('必須在[0°,359.9999°]之間'))
} else {
callback()
}
} else {
callback()
}
}
// 0~360° => 3
var degreePosTwo = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^((([1-9]\d{0,2})|[0])(.\d{1,2})?)?$/
if (!reg.test(value)) {
callback(new Error('必須在[0°,360°]之間且最多保留2位小數'))
} else {
const val = Number(value)
if (val < 0 || val > 360) {
callback(new Error('必須在[0°,360°]之間且最多保留2位小數'))
} else {
callback()
}
}
} else {
callback()
}
}
// 0~90° => 3
var slopePosTwo = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^((([1-9]\d{0,1})|[0])(.\d{1,2})?)?$/
if (!reg.test(value)) {
callback(new Error('必須在[0°,90°]之間且最多保留2位小數'))
} else {
const val = Number(value)
if (val < 0 || val > 90) {
callback(new Error('必須在[0°,90°]之間且最多保留2位小數'))
} else {
callback()
}
}
} else {
callback()
}
}
// 位數在6-8位 => 6-8
var passwordReg = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^.{6,8}$/
if (!reg.test(value)) {
callback(new Error('必須輸入6-8位字元'))
} else {
callback()
}
} else {
callback()
}
}
var loginPasswordReg = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^(?=.*\d)(?=.*[a-zA-Z])[\da-zA-Z]{8,}$/
if (!reg.test(value)) {
callback(new Error('字母加數字,最少不能低于8個字元'))
} else {
callback()
}
} else {
callback()
}
}
// 數字 => 0~6
var sixNum = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^[0-9]{0,6}$/
if (!reg.test(value)) {
callback(new Error('必須由0-6位純數字組成'))
} else {
callback()
}
} else {
callback()
}
}
// 數字 => 7位
var sevenNum = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^[0-9]{7}$/
if (!reg.test(value)) {
callback(new Error('必須由7位純數字組成'))
} else {
callback()
}
} else {
callback()
}
}
// 數字 => 1~9
var nineNum = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^[0-9]{1,9}$/
if (!reg.test(value)) {
callback(new Error('必須由1-9位純數字組成'))
} else {
callback()
}
} else {
callback()
}
}
// 整數
var intNum = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^\d+$/
if (!reg.test(value)) {
callback(new Error('必須為整數'))
} else {
callback()
}
} else {
callback()
}
}
// 保留兩位小數
var twoDecimal = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^(([1-9]{1}\d*)|(0{1}))(\.\d{1,2})?$/
if (!reg.test(value)) {
callback(new Error('必須為正數且最多保留兩位小數'))
} else {
callback()
}
} else {
callback()
}
}
// 保留兩位小數 => ±
var twoDecimalAll = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^-?(([1-9]{1}\d*)|(0{1}))(\.\d{1,2})?$/
if (!reg.test(value)) {
callback(new Error('最多保留兩位小數'))
} else {
callback()
}
} else {
callback()
}
}
var IPReg = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^(((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))?$/
if (!reg.test(value)) {
callback(new Error('IP位址格式不對'))
} else {
callback()
}
} else {
callback()
}
}
var IdCardReg = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /(^\d{8}(0\d|10|11|12)(0[1-9]|[1-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0\d|10|11|12)(0[1-9]|[1-2]\d|30|31)\d{3}(\d|X|x)$)/
if (!reg.test(value)) {
callback(new Error('身份證格式不對'))
} else {
callback()
}
} else {
callback()
}
}
// 正整數
var portReg = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^[+]{0,1}(\d+)$/
if (!reg.test(value)) {
callback(new Error('端口号為正整數'))
} else {
callback()
}
} else {
callback()
}
}
// 中文
var chReg = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^[\u4e00-\u9fa5]$/
if (!reg.test(value)) {
callback(new Error('必須為中文字元'))
} else {
callback()
}
} else {
callback()
}
}
// 中文
var flightNumReg = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^[0-9]{3,4}[a-zA-Z]?$/
if (!reg.test(value)) {
callback(new Error('必須為3~4位數字加0~1位字母'))
} else {
callback()
}
} else {
callback()
}
}
// 郵箱驗證
var emailReg = (rule, value, callback) => {
if (value != '' && value != null) {
// let reg = /^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/
// 不能以0字開;@ ;@後必須是數字與字母組成,長度為2-10位;結尾一組,字母長度為2-4位;.字母,最少一組,最多三組
const reg = /^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/
if (!reg.test(value)) {
callback(new Error('郵箱格式不正确'))
} else {
callback()
}
} else {
callback()
}
}
// [0, 1],小數點後六位小數
var percentReg = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^(([1]{1}\d*)|(0{1}))(\.\d{1,2})?$/
if (value > 1) {
callback(new Error('必須在[0,1]之間且最多保留2位小數'))
} else {
if (!reg.test(value)) {
callback(new Error('必須在[0,1]之間且最多保留2位小數'))
} else {
callback()
}
}
} else {
callback()
}
}
// 員工密碼
var empPwd = (rule, value, callback) => {
if (value != '' && value != null) {
const reg = /^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$).{8,20}$/
if (value > 1) {
callback(new Error('由8-20位數字,英文,字元中的兩種以上組成'))
} else {
if (!reg.test(value)) {
callback(new Error('由8-20位數字,英文,字元中的兩種以上組成'))
} else {
callback()
}
}
} else {
callback()
}
}
export { fiveMultiple, idReg, empPwd, idRegNew, idRegNews, idRegNewTwe, maxENReg, ndENReg, rdENReg, rdEReg, rthEReg, idNumReg, phoneReg, sevDotTwoDigit, fiveDotTwoDigit, sixDotTwoDigit, fivePositiveDotTwo, threeDotTwoDigit, threeD, fiveD, mustD, degreePos, degreePosTwo, slopePosTwo, passwordReg, loginPasswordReg, sixNum, sevenNum, nineNum, intNum, twoDecimal, twoDecimalAll, IPReg, IdCardReg, portReg, chReg, flightNumReg, emailReg, percentReg, rthReg }