常用正則表達(dá)

  • 驗證電子郵箱格式

function email(value) {
    return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value)
}
  • 驗證手機(jī)格式

function mobile(value) {
    return /^1[23456789]\d{9}$/.test(value)
}
  • 驗證URL格式

function url(value) {
    return /^((https|http|ftp|rtsp|mms):\/\/)(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1,3}.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z].[a-zA-Z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+\/?)$/
        .test(value)
}
  • 驗證日期格式

function date(value) {
    if (!value) return false
    // 判斷是否數(shù)值或者字符串?dāng)?shù)值(意味著為時間戳),轉(zhuǎn)為數(shù)值旱爆,否則new Date無法識別字符串時間戳
    if (number(value)) value = +value
    return !/Invalid|NaN/.test(new Date(value).toString())
}
  • 驗證ISO類型的日期格式

function dateISO(value) {
    return /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value)
}
  • 驗證十進(jìn)制數(shù)字

function number(value) {
    return /^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(value)
}
  • 驗證字符串

function string(value) {
    return typeof value === 'string'
}
  • 驗證整數(shù)

function digits(value) {
    return /^\d+$/.test(value)
}
  • 驗證身份證號碼

function idCard(value) {
    return /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(
        value
    )
}
  • 是否車牌號

function carNo(value) {
    // 新能源車牌
    const xreg = /^[京津滬渝冀豫云遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陜吉閩貴粵青藏川寧瓊使領(lǐng)A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/
    // 舊車牌
    const creg = /^[京津滬渝冀豫云遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陜吉閩貴粵青藏川寧瓊使領(lǐng)A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9掛學(xué)警港澳]{1}$/
    if (value.length === 7) {
        return creg.test(value)
    } if (value.length === 8) {
        return xreg.test(value)
    }
    return false
}
  • 金額,只允許2位小數(shù)

function amount(value) {
    // 金額震蒋,只允許保留兩位小數(shù)
    return /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(value)
}
  • 中文

function chinese(value) {
    const reg = /^[\u4e00-\u9fa5]+$/gi
    return reg.test(value)
}
  • 只能輸入字母

function letter(value) {
    return /^[a-zA-Z]*$/.test(value)
}
  • 只能是字母或者數(shù)字

function enOrNum(value) {
    // 英文或者數(shù)字
    const reg = /^[0-9a-zA-Z]*$/g
    return reg.test(value)
}
  • 驗證是否包含某個值

function contains(value, param) {
    return value.indexOf(param) >= 0
}
  • 驗證一個值范圍[min, max]

function range(value, param) {
    return value >= param[0] && value <= param[1]
}
  • 驗證一個長度范圍[min, max]

function rangeLength(value, param) {
    return value.length >= param[0] && value.length <= param[1]
}
  • 是否固定電話

function landline(value) {
    const reg = /^\d{3,4}-\d{7,8}(-\d{3,4})?$/
    return reg.test(value)
}
  • 判斷是否為空

function empty(value) {
    switch (typeof value) {
    case 'undefined':
        return true
    case 'string':
        if (value.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '').length == 0) return true
        break
    case 'boolean':
        if (!value) return true
        break
    case 'number':
        if (value === 0 || isNaN(value)) return true
        break
    case 'object':
        if (value === null || value.length === 0) return true
        for (const i in value) {
            return false
        }
        return true
    }
    return false
}
  • 是否json字符串

function jsonString(value) {
    if (typeof value === 'string') {
        try {
            const obj = JSON.parse(value)
            if (typeof obj === 'object' && obj) {
                return true
            }
            return false
        } catch (e) {
            return false
        }
    }
    return false
}
  • 是否數(shù)組

function array(value) {
    if (typeof Array.isArray === 'function') {
        return Array.isArray(value)
    }
    return Object.prototype.toString.call(value) === '[object Array]'
}
  • 是否對象

function object(value) {
    return Object.prototype.toString.call(value) === '[object Object]'
}
  • 是否短信驗證碼

function code(value, len = 6) {
    return new RegExp(`^\\d{${len}}$`).test(value)
}
  • 是否函數(shù)方法

//@param {Object} value
function func(value) {
   return typeof value === 'function'
}
  • 是否promise對象

 // @param {Object} value
function promise(value) {
    return object(value) && func(value.then) && func(value.catch)
}
  • 是否圖片格式

 //@param {Object} value
function image(value) {
    const newValue = value.split('?')[0]
    const IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i
    return IMAGE_REGEXP.test(newValue)
}
  • 是否視頻格式

 // @param {Object} value
function video(value) {
    const VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i
    return VIDEO_REGEXP.test(value)
}
  • 是否為正則對象

/* @param {Object}
 * @return {Boolean}
 */
function regExp(o) {
    return o && Object.prototype.toString.call(o) === '[object RegExp]'
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末澳叉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子主卫,更是在濱河造成了極大的恐慌忠怖,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屿聋,死亡現(xiàn)場離奇詭異空扎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)润讥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進(jìn)店門勺卢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人象对,你說我怎么就攤上這事⊙绺В” “怎么了勒魔?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵,是天一觀的道長菇曲。 經(jīng)常有香客問我冠绢,道長,這世上最難降的妖魔是什么常潮? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任弟胀,我火速辦了婚禮,結(jié)果婚禮上喊式,老公的妹妹穿的比我還像新娘孵户。我一直安慰自己,他們只是感情好岔留,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布夏哭。 她就那樣靜靜地躺著,像睡著了一般献联。 火紅的嫁衣襯著肌膚如雪竖配。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天里逆,我揣著相機(jī)與錄音进胯,去河邊找鬼。 笑死原押,一個胖子當(dāng)著我的面吹牛胁镐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诸衔,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼希停,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了署隘?” 一聲冷哼從身側(cè)響起宠能,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎磁餐,沒想到半個月后违崇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阿弃,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年羞延,在試婚紗的時候發(fā)現(xiàn)自己被綠了渣淳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡伴箩,死狀恐怖入愧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嗤谚,我是刑警寧澤棺蛛,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站巩步,受9級特大地震影響旁赊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜椅野,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一终畅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧竟闪,春花似錦离福、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鲸湃,卻和暖如春赠涮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背暗挑。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工笋除, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人炸裆。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓垃它,卻偏偏與公主長得像,于是被迫代替她去往敵國和親烹看。 傳聞我的和親對象是個殘疾皇子国拇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,982評論 2 361

推薦閱讀更多精彩內(nèi)容