后端正则

/**
 * Created by jiachenpan on 16/11/18.
 */
import { MessageBox } from 'element-ui'
/* 用户名正则,6到18位(字母,数字,下划线,减号)*/
export function validateAccount(str) {
  const reg = /^[a-zA-Z0-9_-]{6,18}$/
  return reg.test(str)
}
/* 密码正则,6到16位字必须数字,字母组合*/
export function validatePassword(str) {
  const reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,12}$/
  return reg.test(str)
}

export function isvalidUsername(str) {
  const valid_map = ['admin', 'editor']
  return valid_map.indexOf(str.trim()) >= 0
}

/* 合法uri*/
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|top|aspx|[a-zA-Z]{2,}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
  return urlregex.test(textval)
}

/* 小写字母*/
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)
}

// 图片只能是JPG 或 PNG 格式
// export function validateImgFormal(file) {
//   const isImg = file.type == 'image/jpeg' || file.type == 'image/png'
//   if (!isImg) {
//     this.$message.warning('上传图片只能是 JPG 或 PNG 格式')
//   }
//   return isImg
// }
// 图片只能是JPG 或 PNG 格式或gif
export function validateImgFormal(file, that, gif) {
  var isImg
  console.log(gif)
  if (gif) {
    isImg = file.type == 'image/jpeg' || file.type == 'image/png' || file.type == 'image/gif'
  } else {
    isImg = file.type == 'image/jpeg' || file.type == 'image/png'
  }
  if (!isImg) {
    console.log(that)
    if (gif) {
      that.$message.warning('上传图片只能是 JPG 、 PNG 或 GIF 格式!')
    } else {
      that.$message.warning('上传图片只能是 JPG 或 PNG 格式')
    }
  }
  return isImg
}
/**
 * validate email
 * @param email
 * @returns {boolean}
 */
export function validateEmail(email) {
  const re = /^(([^<>()\[\]\\.,;:\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 re.test(email)
}

/**
 * 纯数字验证
 *
 */
export function validateNumber(str) {
  return str.replace(/[^\d]/g, '')
}

/**
 *  排序数字验证,只能是大于0的整数
 */
export function validateSortNumber(str) {
  if (!str) { return true }
  if (Number(str) < 0 || /\./g.test(str)) {
    return false
  }
  return true
}

/**
 * 价格验证
 * 允许一个小数点或者整数
 *
 */
export function validatePrice(str) {
  return str.match(/\d{1,}\.{0,1}\d{0,}/) == null ? '' : str.match(/\d{1,}\.{0,1}\d{0,}/)[0]
}
/**
 * 保留两位小数验证
 *
 *
 */
export function validatebitTwo(str) {
  str = str + ''
  return str.match(/^(([0-9]{1}\d*)|(0{1}))(\.\d{0,2})?$/) == null ? '' : str.match(/^(([0-9]{1}\d*)|(0{1}))(\.\d{0,2})?$/)[0]
}
/**
 * 验证手机号
 *
 */
export function isPhoneNumber(phoneStr) {
  // var mobile = /^((13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])+\d{8})$/
  var mobile = /^(1\d{10})$/
  return mobile.test(phoneStr)
}
/**
 * 获取字符串长度(一个中文等于2个字符)
 *
 */
export function getChineseStrLength(str) {
  const chStr = str
  const reg = /([\u4E00-\u9FA5]|[\uFE30-\uFFA0])/g
  return chStr.replace(reg, 'aa').length
}
/**
 * 获取字符串长度(
 * 一个中文或中文标点算1个字符(2字节),
 * 1个英文或英文标点或数字算1字节,
 * 奇数时多出来的1个字节也占1字符。)
 *
 */
export function getLength(str) {
  // 如果传入的是undefined 则不进行正则判断
  if (!str) {
    return 0
  }
  const chStr = str
  const reg = /([\u4E00-\u9FA5]|[\uFE30-\uFFA0]|[^\x00-\xff])/g
  // 中文及字符的长度
  var Ch = chStr.length - chStr.replace(reg, '').length
  // 非中文字符的长度 2个非中文算一个长度  3个取1个长度
  var En = Math.floor(chStr.replace(reg, '').length / 2)
  return (Ch + En)
}
export function getChLength(str) {
  // 如果传入的是undefined 则不进行正则判断
  if (!str) {
    return 0
  }

  var chStr = str
  const spec = /<p><img/
  let arr = null
  // 只有图片没有文字 chStr
  if ((arr = spec.exec(str)) != null) {
    chStr = arr.length > 1 ? removeFontFamily(str) : str
  } else {
    chStr = removeFontFamily(str)
  }

  const reg = /([\u4E00-\u9FA5]|[\uFE30-\uFFA0]|[^\x00-\xff])/g

  var Ch = chStr.length - chStr.replace(reg, '').length
  return Ch
}
// 校验非负整数包含0
export function validateInteger(str) {
  const reg = /^[0-9]+$/
  return reg.test(str)
}
// 输入框不能填入空
export function validEmpty(str) {
  if (!(typeof (str) === 'string')) {
    throw new Error('类型错误,请输入字符串')
  }
  if (str.trim().length === 0) {
    return true
  } else {
    return false
  }
}
/* 链接*/
export function validateUrl(str) {
  var regex = new RegExp(/(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/)
  return regex.test(str)
}
export function twoPointInput(item) {
  item = item.replace(/[^\d.]/g, '') // 仅保留数字和"."
  item = item.replace(/\.{2,}/g, '.') // 两个连续的"."仅保留第一个"."
  item = item
    .replace('.', '$#*')
    .replace(/\./g, '')
    .replace('$#*', '.') // 去除其他"."
  item = item.replace(/^(\d+)\.(\d\d).*$/, '$1.$2') // 限制只能输入两个小数
  if (item.indexOf('.') < 0 && item != '') {
    // 首位是0的话去掉
    item = parseFloat(item)
  }
  return item
}


// 去除掉font-family: xxxx;
function removeFontFamily(contnet) {
  // remove repeat
  var unique = function(arr) {
    var result = []
    var hash = {}
    for (var i = 0, elem; (elem = arr[i]) != null; i++) {
      if (!hash[elem]) {
        result.push(elem)
        hash[elem] = true
      }
    }
    return result
  }

  var arr = contnet.match(/(font-family:[^><;"]*(;)?)/ig)
  arr = unique(arr)
  for (var i = 0; i < arr.length; i++) {
    console.log(arr[i])
    var reg = new RegExp(arr[i], 'ig')
    contnet = contnet.replace(reg, '')
  }
  return contnet
}
/** 验证浏览器版本 */
export function validateNavigator() {
  var u = navigator.userAgent
  console.log('版本', u)
  //  u.indexOf('AppleWebKit') == -1 && u.indexOf('Trident') == -1 && u.indexOf('Presto') == -1// 苹果、谷歌内核 //opera内核//IE内核
  if (u.indexOf('Chrome') == -1) {
    MessageBox.confirm('此浏览器不支持该功能,请您更换为谷歌或者360浏览器', '提示', {
      confirmButtonText: '去下载',
      cancelButtonText: '取消',
      type: 'warning'
    }).then(() => {
      // win 64位
      window.open('http://kpapi1.ckjr001.com/tools/chrome_79_x64.exe')
    }).catch(() => {

    })
    return false
  }
  return true
}