//表單驗證,參考https://www.cnblogs.com/bester-ace/articles/10292697.html
export const regular = {
// 驗證自然數
naturalNumber: /^(([0-9]*[1-9][0-9]*)|(0+))$/,
naturalNumberMsg: '請輸入自然數',
// 驗證數字最小爲1
minOneNumber: /^[1-9]\d*$/,
minOneNumberMsg: '請輸入不小於1的整數',
// 驗證數字最小爲1
minOneNumberNum: /^([1-9]\d{0,2}|0)$/,
minOneNumberNums: /^([1-9]\d{0,3}|0)$/,
minOneNumberNumMsg: '請輸入0到999內的數字',
minOneNumberNumMsgs: '請輸入0到9999內的數字',
num0to99999: /^([1-9]\d{0,4}|0)$/,
num0to99999Msg: '請輸入0到99999內的數字',
num0to9999: /^([1-9]\d{0,3}|0)$/,
num0to9999Msg: '請輸入0到9999內的整數',
// 驗證數字0-99
num0to99: /^\d{1,2}$/,
num0to99Msg: '0~99的整數,單位秒',
//驗證數字最小爲100001
minNumber100001: /^([1-9]\d{4}[1-9]|[1-9]\d{5,9}[0-9]|0)$/,
minNumber100001Msgs: '請輸入0或大於100000的整數,並且位數小於11位',
// 英文
english: /[a-zA-Z]/,
englishMsg: '請輸入英文字母',
// 座機
telephone: /^\d{3}-\d{7,8}|\d{4}-\d{7,8}$/,
telephoneMsg: '請輸入正確的座機號',
//手機號碼(第一位是‘1’即認爲手機號正確)
mobile: /^1\d{10}$/,
mobileMsg: '請輸入正確的手機號',
phone: /^1(3|4|5|6|7|8|9)\d{9}$/,
phoneMsg: '請輸入11位合法手機號',
email: /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,7})$/,
emailMsg: '請輸入正確郵箱',
// 銀行卡號碼
bankCard: /^[1-9]\d{9,19}$/,
bankCardMsg: '請輸入正確的銀行卡號碼',
// 證件號碼
IDNumber:
/^[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]$/,
IDNumberMsg: '請輸入正確的證件號碼',
//
LicenseNumber:
/(^(?:(?![IOZSV])[\dA-Z]){2}\d{6}(?:(?![IOZSV])[\dA-Z]){10}$)|(^\d{15}$)/,
LicenseNumberMsg: '請輸入正確的營業執照號',
orgCode: /([A-Z-0-9]{8}-[A-Z-0-9])|([A-Z-0-9]{9}$)/,
orgCodeMsg: '請輸入正確的組織機構碼',
// 身份證號碼,包括15位和18位的
IDCard:
/(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{7}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)/,
IDCardMsg: '請輸入正確的身份證號碼',
// QQ號碼
qq: /^[1-9]\d{4,11}$/,
qqMsg: '請輸入正確的QQ號碼',
// 網址, 僅支持http和https開頭的
url: /^(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-.,@?^=%&:/~+#]*[\w\-@?^=%&/~+#])?$/,
urlMsg: '請輸入以http和https開頭的網址',
// 0到20位的英文字符和數字
enNum0to20: /^[a-z0-9A-Z]{0,20}$/,
enNum0to20Msg: '請輸入20位以內的英文字符和數字',
// 2到100位的中英文字符和空格
cnEnSpace2to100: /^[a-zA-Z\u4E00-\u9FA5\s*]{2,100}$/,
cnEnSpace2to100Msg: '請輸入2到100位的中英文字符和空格',
// 數字和換行符
numLinefeed: /^[0-9\n*]+$/,
numLinefeedMsg: '請輸入數字和換行符',
// 255位以內的字符
char0to255: /^.{0,255}$/,
char0to255Msg: '請輸入255位以內的字符',
// 200位以內的字符
char0to200: /^.{0,200}$/,
char0to200Msg: '最多輸入200個文字',
//0到60位以內的字符
char0to30: /^.{0,30}$/,
char0to30Msg: '最多輸入30個文字',
char0to10: /^.{0,10}$/,
char0to10Msg: '最多輸入10個文字',
char0to3: /^.{0,3}$/,
char0to3Msg: '最多輸入3位數',
// 1到50位以內的字符
char0to50: /^[\u4e00-\u9fffa-zA-Z0-9]{1,50}$/,
char0to50Msg: '請輸入1-50位以內的文本字符(不可使用符號)',
specialChar0to30: /^[\u4e00-\u9fffa-zA-Z0-9]{1,30}$/,
specialChar0to30Msg: '請輸入1-30位以內的文本字符(不可使用符號)',
domainName:
/^(?=^.{3,255}$)[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$/,
domainNameMsg: '企業域名格式不正確',
// 1到50位的英文字符和數字
enNum0to50: /^[a-z0-9A-Z]{1,50}$/,
enNum0to50Msg: '請輸入1-50位以內的英文字符或數字',
// 1到18位數字、字母
enNum0to18: /^[a-z0-9A-Z]{1,18}$/,
enNum0to18Msg: '請輸入18位字符長度的數字或字母',
baseUrl: 'http://172.18.1.13:18080',
//支持 http https www 開頭的url
checkUrl: /[a-zA-z]+:\/[^\s]*/,
checkUrlMsg: '請輸入正確的url',
//ip 校驗
checkIp:
/^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/,
checkIpMsg: '請輸入正確的IP',
port: /^([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{4}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/,
portMsg: '請輸入正確的端口號',
// unSpecial:/^[\u0391-\uFFE5A-Za-z\d]+$/,
unSpecial: /^[\u4e00-\u9fa5A-Za-z\d]+$/,
unSpecialMsg: '不可使用符號',
checkCode: /^[0-9]{6}$/,
checkCodeMsg: '驗證碼格式不正確',
password:
/^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?![,\.#@%'\+\*\-:;^_`]+$)[,\.#%'\+\*\-:;^_`0-9A-Za-z]{6,16}$/,
passwordMsg:
'密碼必須是數字、字母、符號至少兩種以上的組合(6-16位),請重新輸入',
}
/**
* @description 排序值驗證,排序值不可以大於255
*/
export const validateOrder = function (rule, value, callback) {
if (parseInt(value) > 255) {
return callback(new Error('排序值不可以大於255'))
} else {
callback()
}
}
String.prototype.gllength = function () {
let len = 0
for (let i = 0; i < this.length; i++) {
if (this.charCodeAt(i) > 127 || this.charCodeAt(i) == 94) {
len += 2
} else {
len++
}
}
return len
}
export const validategllength2And10 = (rule, value, callback) => {
if (value == undefined) {
callback()
}
if (value.trim().gllength() > 10 || value.trim().gllength() < 2) {
callback(new Error('請輸入2-10個字符(1漢字=2字母=2字符)'))
} else {
callback()
}
}
export const validategllength2And30 = (rule, value, callback) => {
if (value == undefined) {
callback()
}
if (value.trim().gllength() > 30 || value.trim().gllength() < 2) {
callback(new Error('請輸入2-30個字符(1漢字=2字母=2字符)'))
} else {
callback()
}
}
export const valid2And60 = (rule, value, callback) => {
if (value === undefined || value === null || value === '') {
callback()
}
if (value.trim().gllength() > 60) {
callback(new Error('用戶名稱不能超過60個字符'))
} else {
callback()
}
}
export const validategllength2And100 = (rule, value, callback) => {
if (value === undefined || value === null) {
callback()
} else {
var textValue = value.replace(/[\r\n]/g, '') //去除換行.
if (
(textValue.trim().gllength() <= 100 &&
textValue.trim().gllength() >= 2) ||
textValue.trim().gllength() === 0
) {
callback()
} else {
callback(new Error('請輸入2-100個字符(1漢字=2字母=2字符)'))
}
}
}
export const validategllength100 = (rule, value, callback) => {
if (value === undefined || value === null) {
callback()
} else {
var textValue = value.replace(/[\r\n]/g, '') //去除換行.
if (
textValue.trim().gllength() <= 100 ||
textValue.trim().gllength() === 0
) {
callback()
} else {
callback(new Error('請輸入不大於100個字符(1漢字=2字母=2字符)'))
}
}
}
export const validategllength2And150 = (rule, value, callback) => {
if (value == undefined) {
callback()
}
if (value.trim().gllength() > 150) {
callback(new Error('最多輸入150個字符(1漢字=2字母=2字符)'))
} else {
callback()
}
}
export const validategllength2And60 = (rule, value, callback) => {
if (value === undefined || value === null) {
callback()
} else {
var textValue = value.replace(/[\r\n]/g, '') //去除換行.
if (
(textValue.trim().gllength() <= 60 && textValue.trim().gllength() >= 2) ||
textValue.trim().gllength() === 0
) {
callback()
} else {
callback(new Error('請輸入2-60個字符(1漢字=2字母=2字符)'))
}
}
}
export const validategllength2And20 = (rule, value, callback) => {
if (value === undefined || value === null) {
callback()
} else {
var textValue = value.replace(/[\r\n]/g, '') //去除換行.
if (
(textValue.trim().gllength() <= 20 && textValue.trim().gllength() >= 2) ||
textValue.trim().gllength() === 0
) {
callback()
} else {
callback(new Error('請輸入2-20個字符(1漢字=2字母=2字符)'))
}
}
}
export const emailLength6And50 = (rule, value, callback) => {
if (value === undefined || value === null) {
callback()
} else {
var textValue = value.replace(/[\r\n]/g, '') //去除換行.
if (
(textValue.trim().gllength() <= 50 && textValue.trim().gllength() >= 6) ||
textValue.trim().gllength() === 0
) {
callback()
} else {
callback(new Error('請輸入6-50位長度郵箱'))
}
}
}
/*let regEmail = new RegExp(/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,7})$/);
if(!this.Register2Form.email || !regEmail.test(this.Register2Form.email)){
this.errorMesage('請輸入正確郵箱')
return
}
if(this.Register2Form.email.length < 6 || this.Register2Form.email.length > 50){
this.errorMesage('請輸入6-50位長度郵箱')
return
}*/