|
@@ -0,0 +1,250 @@
|
|
|
+/**
|
|
|
+ * Created by PanJiaChen on 16/11/18.
|
|
|
+ */
|
|
|
+/**
|
|
|
+ * @param {string} path
|
|
|
+ * @returns {Boolean}
|
|
|
+ */
|
|
|
+export function isExternal(path) {
|
|
|
+ return /^(https?:|mailto:|tel:)/.test(path)
|
|
|
+}
|
|
|
+
|
|
|
+/**str
|
|
|
+ * @returns {Boolean}
|
|
|
+ * @param {string}
|
|
|
+ */
|
|
|
+export function validUsername(str) {
|
|
|
+ const valid_map = ['admin', 'editor']
|
|
|
+ return valid_map.indexOf(str.trim()) >= 0
|
|
|
+}
|
|
|
+
|
|
|
+export function validnumber(rule, value, callback) {
|
|
|
+ if (value === '' || value === undefined || value === null) {
|
|
|
+ if(rule.required){
|
|
|
+ callback(new Error('请输入必填项'))
|
|
|
+ }else{
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ const reg = (/^[+]{0,1}(\d+)$/)
|
|
|
+ if ((!reg.test(value)) && value !== '') {
|
|
|
+ callback(new Error('只能是正整数'))
|
|
|
+ } else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+export function validPrice(rule, value, callback) {
|
|
|
+ if (value === '' || value === undefined || value === null) {
|
|
|
+ if(rule.required){
|
|
|
+ callback(new Error('请输入必填项'))
|
|
|
+ }else{
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ const reg = (/(^[1-9]\d*(\.\d{1,2})?$)|(^0(\.\d{1,2})?$)/)
|
|
|
+ if ((!reg.test(value)) && value !== '') {
|
|
|
+ callback(new Error('请输入正确的价格,支持两位小数'))
|
|
|
+ } else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+export function validYear(rule, value, callback) {
|
|
|
+ if (value === '' || value === undefined || value === null) {
|
|
|
+ callback()
|
|
|
+ } else {
|
|
|
+ const reg = (/[0-9]{4}/)
|
|
|
+ if ((!reg.test(value)) && value !== '') {
|
|
|
+ callback(new Error('请输入正确的年份'))
|
|
|
+ } else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+export function validEmail(rule, value, callback) {
|
|
|
+ if (value === '' || value === undefined || value === null) {
|
|
|
+ callback()
|
|
|
+ } else {
|
|
|
+ const reg = (/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/)
|
|
|
+ if ((!reg.test(value)) && value !== '') {
|
|
|
+ callback(new Error('请输入正确的邮箱'))
|
|
|
+ } else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+export function validEmails(rule, value, callback) {
|
|
|
+ if (value === '' || value === undefined || value === null) {
|
|
|
+ callback()
|
|
|
+ } else {
|
|
|
+ var ruleItem = value.split(';')
|
|
|
+ for (var i in ruleItem) {
|
|
|
+ const reg = (/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/)
|
|
|
+ if ((!reg.test(ruleItem[i])) && ruleItem[i] !== '') {
|
|
|
+ callback(new Error(ruleItem[i] + '格式错误,请输入正确的邮箱,多个邮箱时用";"分隔'))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+export function validNumberAndWord(rule, value, callback) {
|
|
|
+ if (value === '' || value === undefined || value === null) {
|
|
|
+ callback()
|
|
|
+ } else {
|
|
|
+ const reg = (/^([a-zA-Z0-9_\.\-])+$/)
|
|
|
+ if ((!reg.test(value)) && value !== '') {
|
|
|
+ callback(new Error('只能为数字和字母'))
|
|
|
+ } else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+export function checkMaxVal(rule, value, callback) {
|
|
|
+ if (value < 0 || value > 100000000) {
|
|
|
+ callback(new Error('请输入[0,100000000]之间的数字'))
|
|
|
+ } else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+export function checkMaxIntVal(rule, value, callback) {
|
|
|
+ if (value < 0 || value > 2147483647) {
|
|
|
+ callback(new Error('请输入[0,2147483647]之间的数字'))
|
|
|
+ } else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+export function validator(rule, value, callback) {
|
|
|
+ if (!(/^1[3456789]\d{9}$/.test(value)) && value) {
|
|
|
+ callback(new Error('请输入正确的手机号码!'))
|
|
|
+ }else{
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+export function validatorTel(rule, value, callback) {
|
|
|
+ if(!value){
|
|
|
+ callback()
|
|
|
+ }else{
|
|
|
+ if (!(/^1[3456789]\d{9}$/.test(value))) {
|
|
|
+ callback(new Error('请输入正确的手机号!'))
|
|
|
+ }else{
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+export function IdentityCodeValid(rule, value, callback) {
|
|
|
+// 该方法由佚名网友提供;
|
|
|
+ if(value.length === 0){
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ if (value.length === 15) {
|
|
|
+ if (isValidityBrithBy15IdCard(value)) {
|
|
|
+ callback()
|
|
|
+ } else {
|
|
|
+ callback(new Error('请输入有效的身份证'))
|
|
|
+ }
|
|
|
+ } else if (value.length === 18) {
|
|
|
+ var a_idCard = value.split('')// 得到身份证数组
|
|
|
+ if (isValidityBrithBy18IdCard(value) && isTrueValidateCodeBy18IdCard(a_idCard)) {
|
|
|
+ callback()
|
|
|
+ } else {
|
|
|
+ callback(new Error('请输入有效的身份证'))
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ callback(new Error('请输入有效的身份证'))
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+ function isTrueValidateCodeBy18IdCard(a_idCard) {
|
|
|
+ var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1]// 加权因子;
|
|
|
+ var ValideCode = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2]// 身份证验证位值,10代表X;
|
|
|
+ var sum = 0 // 声明加权求和变量
|
|
|
+ if (a_idCard[17].toLowerCase() == 'x') {
|
|
|
+ a_idCard[17] = 10// 将最后位为x的验证码替换为10方便后续操作
|
|
|
+ }
|
|
|
+ for (var i = 0; i < 17; i++) {
|
|
|
+ sum += Wi[i] * a_idCard[i]// 加权求和
|
|
|
+ }
|
|
|
+ var valCodePosition = sum % 11// 得到验证码所位置
|
|
|
+ if (a_idCard[17] == ValideCode[valCodePosition]) {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ return false
|
|
|
+}
|
|
|
+
|
|
|
+function isValidityBrithBy18IdCard(idCard18) {
|
|
|
+ var year = idCard18.substring(6, 10)
|
|
|
+ var month = idCard18.substring(10, 12)
|
|
|
+ var day = idCard18.substring(12, 14)
|
|
|
+ var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day))
|
|
|
+ // 这里用getFullYear()获取年份,避免千年虫问题
|
|
|
+ if (temp_date.getFullYear() != parseFloat(year) || temp_date.getMonth() != parseFloat(month) - 1 || temp_date.getDate() != parseFloat(day)) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ return true
|
|
|
+}
|
|
|
+
|
|
|
+function isValidityBrithBy15IdCard(idCard15) {
|
|
|
+ var year = idCard15.substring(6, 8)
|
|
|
+ var month = idCard15.substring(8, 10)
|
|
|
+ var day = idCard15.substring(10, 12)
|
|
|
+ var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day))
|
|
|
+ // 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法
|
|
|
+ if (temp_date.getYear() != parseFloat(year) || temp_date.getMonth() != parseFloat(month) - 1 || temp_date.getDate() != parseFloat(day)) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ return true
|
|
|
+}
|
|
|
+
|
|
|
+export function isblank(rule, value, callback) {
|
|
|
+ if (value && value.replace(/\s+/g,"") === '') {
|
|
|
+ callback(new Error('不能为空'))
|
|
|
+ }else{
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 是否存在空格
|
|
|
+ * @param rule
|
|
|
+ * @param value
|
|
|
+ * @param callback
|
|
|
+ */
|
|
|
+export function isHasblank(rule, value, callback) {
|
|
|
+ if (value && value.indexOf(' ') >0) {
|
|
|
+ callback(new Error('不能有空格'))
|
|
|
+ }else{
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+//验证是否1-99之间
|
|
|
+export function isOneToNinetyNine(rule, value, callback) {
|
|
|
+ if (!value) {
|
|
|
+ return callback(new Error('输入不可以为空'));
|
|
|
+ }
|
|
|
+ setTimeout(() => {
|
|
|
+ if (!Number(value)) {
|
|
|
+ callback(new Error('请输入正整数'));
|
|
|
+ } else {
|
|
|
+ const re = /^[1-9][0-9]{0,1}$/;
|
|
|
+ const rsCheck = re.test(value);
|
|
|
+ if (!rsCheck) {
|
|
|
+ callback(new Error('请输入正整数,值为【1,99】'));
|
|
|
+ } else {
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, 0);
|
|
|
+}
|