一些正则表达式

354 阅读1分钟
/**
 * [判断是否微信小程序appId]
 *
 * @param {String} appId 一个id
 * @return {Boolean} true or false
 * @example
 * isMiniProgramAppId('wx5a8c7630cd02ce1d')
 */
function isMiniProgramAppId(appId) {
  const idPatt = new RegExp('^wx[0-9a-f]{16}$')
  return idPatt.test(appId)
}
/**
 * [判断是否微信小程序路由]
 *
 * @description 只能用作判断是否符合路由规则,不能用作判断当前小程序是否存在该路由 
 * @param {String} path 一个路由地址
 * @return {Boolean} true or false
 * @example
 * isMiniProgramPath('/subA/pages/index')
 */
function isMiniProgramPath(path) {
  const subPackagePre = ['package', 'sub', 'module']
  const subPackagePatt = `(?:(?:${subPackagePre.join('|')})(?:[a-zA-Z]+)\\/)*`
  const pathPatt = new RegExp(`^\\/${subPackagePre.length ? subPackagePatt : ''}pages\\/.+`)
  return pathPatt.test(path)
}
/**
 * [在小程序内判断机型是否iPhone X]
 *
 * @param {String} model 在 wx.getSystemInfo 中获取的model
 * @return {Boolean} true or false
 * @example
 * isiPhoneX('iPhone XR')
 */
function isiPhoneX(model) {
  const pathPatt = new RegExp('^iPhone(?:(?:\\sX[S|R]*)|(?:10,[3|6])|(?:11,[2|4|6|8])|(?:12,[1|3|5]){1})$')
  return pathPatt.test(model)
}

/**
 * [判断是否base64]
 *
 * @param {String} base64 一段base64编码
 * @return {Boolean} true or false
 * @example
 * isBase64('data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7')
 */
function isBase64(base64) {
  const ext = ['jpeg', 'png', 'gif', 'x\\-icon'].map((v) => `(${v})`).join('|')
  const base64Patt = new RegExp(`^data:image\\/[${ext}]+;base64,.*`)
  return base64Patt.test(base64)
}