常用的正則匹配方法(手機號助琐、身份證號祭埂、地址、url參數兵钮、去除空字符串蛆橡、獲取cookie、設置cookie)


export const noop = (f:any) => f

// 驗證手機號
export const isPhone = (phone:string):boolean => {
  const reg = /^1[3-9]\d{9}$/
  return reg.test(phone)
}

// 驗證身份證號
export const isIdNumber = (number:string):boolean => {
  const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
  return reg.test(number)
}

// 驗證地址
// export const validateAddress = (address:string):boolean => address === address
//   .replace(/(\d+)([^\d]+)/, '$1').replace(/([a-zA-Z]+)([^a-zA-Z]+)/, '$1')

export const isValidAddress = (address:string):boolean => {
  const reg = /[\u4e00-\u9fa5]/
  if (!reg.test(address)) {
    return address !== address.replace(/(\d+)([^\d]+)/, '$1').replace(/([a-zA-Z]+)([^a-zA-Z]+)/, '$1')
  }
  return reg.test(address)
}

export function getQueryString(name:string) {
  const reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`, 'i') // 匹配目標參數
  const result = window.location.search.substr(1).match(reg) // 對querystring匹配目標參數
  if (result != null) {
    return decodeURIComponent(result[2])
  }
  return null
}

/**
 *去除空的字符串(根據提供特殊的字符串)
 */
export const trim = (datas:Record<string, any>, delimiters:any = '') => {
  const props:Record<string, any> = {}
  Object.entries(datas).forEach(([key, value]) => {
    if (value !== delimiters) {
      props[key] = value
    }
  })
  return props
}

/**
 * 設置cookie
 * @param name
 * @param value
 */
export function setCookie(name:string, value:string, days:number = 15) {
  const exp = new Date()
  exp.setTime(exp.getTime() + (days * 24 * 60 * 60 * 1000))
  document.cookie = `${name}=${escape(value)};expires=${exp.toUTCString()};path=/`
}

/**
 * 獲取cookie
 * @param name
 */
export function getCookie(name:string) {
  const arr = document.cookie.match(new RegExp(`(^| )${name}=([^;]*)(;|$)`))
  if (arr != null) return unescape(arr[2]); return null
}

/**
 * 延遲函數
 * @param ms
 */
export function delay(ms: number) {
  return new Promise(r => setTimeout(r, ms))
}

/**
 * 類型判斷
 * @param o
 */
export function toTypeof(o: any): string {
  if (typeof o !== 'object') {
    return (typeof o)
  }
  return Object.prototype.toString.call(o).match(/\s([a-zA-Z]+)/)[1].toLowerCase()
}

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末掘譬,一起剝皮案震驚了整個濱河市泰演,隨后出現的幾起案子,更是在濱河造成了極大的恐慌葱轩,老刑警劉巖睦焕,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異靴拱,居然都是意外死亡复亏,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門缭嫡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缔御,“玉大人,你說我怎么就攤上這事妇蛀「唬” “怎么了笤成?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長眷茁。 經常有香客問我炕泳,道長,這世上最難降的妖魔是什么上祈? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任培遵,我火速辦了婚禮,結果婚禮上登刺,老公的妹妹穿的比我還像新娘籽腕。我一直安慰自己,他們只是感情好纸俭,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布皇耗。 她就那樣靜靜地躺著,像睡著了一般揍很。 火紅的嫁衣襯著肌膚如雪郎楼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天窒悔,我揣著相機與錄音呜袁,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的哟绊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼荐操,長吁一口氣:“原來是場噩夢啊……” “哼芜抒!你這毒婦竟也來了珍策?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤宅倒,失蹤者是張志新(化名)和其女友劉穎攘宙,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體拐迁,經...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡蹭劈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了线召。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铺韧。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缓淹,靈堂內的尸體忽然破棺而出哈打,到底是詐尸還是另有隱情塔逃,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布料仗,位于F島的核電站湾盗,受9級特大地震影響,放射性物質發(fā)生泄漏立轧。R本人自食惡果不足惜格粪,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望氛改。 院中可真熱鬧帐萎,春花似錦、人聲如沸平窘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瑰艘。三九已至是鬼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間紫新,已是汗流浹背均蜜。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留芒率,地道東北人囤耳。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像偶芍,于是被迫代替她去往敵國和親充择。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內容