平時(shí)工作中一些常用的JS正則表達(dá)式及簡(jiǎn)單封裝

常用正則表達(dá)式

總結(jié)了一些平時(shí)工作中常用的正則表達(dá)式胰默,并簡(jiǎn)單地封裝成了validate.js萍悴。

  • 是否是正整數(shù)
  • 是否是正數(shù)(可以是正整數(shù)陪白,也可以是正浮點(diǎn)數(shù))
  • 驗(yàn)證手機(jī)號(hào)格式是否正確
  • 驗(yàn)證電子郵箱格式是否正確
  • 驗(yàn)證URL地址格式是否正確
  • 驗(yàn)證身份證號(hào)格式是否正確
  • 判斷是否為空

/**
 * 是否是正整數(shù)
 * @param {*} value 待驗(yàn)證的數(shù)值
 * @returns 驗(yàn)證結(jié)果
 */
export function isPositiveInteger(value) {
    const reg = /^\d+$/
    return reg.test(value)
}

/**
 * 是否是正數(shù)进副,可以是整數(shù)距芬,也可以是浮點(diǎn)數(shù)
 * @param {*} value 待驗(yàn)證的數(shù)值
 * @returns 驗(yàn)證結(jié)果
 */
export function isPositiveNumber(value) {
    const reg = /^\d*\.?\d+$/
    return reg.test(value)
}

/**
 * 驗(yàn)證手機(jī)號(hào)格式是否正確(寬松)
 * @param {*} value 待驗(yàn)證的手機(jī)號(hào)
 * @returns 驗(yàn)證結(jié)果
 */
export function validMobile(mobile) {
    const reg = /^1[0-9]{10}$/
    return reg.test(mobile)
}

/**
 * 驗(yàn)證電子郵箱格式是否正確
 * @param {*} value 待驗(yàn)證的電子郵箱
 * @returns 驗(yàn)證結(jié)果
 */
export function validEmail(email) {
    const reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/
    return reg.test(email)
}

/**
 * 驗(yàn)證URL地址格式是否正確
 * @param {*} value 待驗(yàn)證的URL地址
 * @returns 驗(yàn)證結(jié)果
 */
export function validURL(s) {
    const reg = /^http[s]?:\/\/.*/
    return reg.test(s)
}

/**
 * 驗(yàn)證身份證號(hào)格式是否正確
 * @param {*} value 待驗(yàn)證的身份證號(hào)
 * @returns 驗(yàn)證結(jié)果
 */
export function validIdNo() {
    const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
    return reg.test(s)
}

/**
 * 判斷是否為空
 * @param {*} value 待驗(yàn)證內(nèi)容
 * @returns 驗(yàn)證結(jié)果
 */
export function isNull(val) {
    if (typeof val === 'boolean') {
        return false
    }
    if (typeof val === 'number') {
        return false
    }
    if (val instanceof Array) {
        if (val.length === 0) return true
    } else if (val instanceof Object) {
        if (JSON.stringify(val) === '{}') return true
    } else {
        if (val === 'null' || val == null || val === 'undefined' || val === undefined || val === '') return true
        return false
    }
    return false
}

后記

正整數(shù)相關(guān)正則表達(dá)式

//正整數(shù)正則
var posPattern = /^\d+$/; //負(fù)整數(shù)正則
var negPattern = /^-\d+$/; //整數(shù)正則
var intPattern = /^-?\d+$/; //輸出 true console.log(posPattern.test("42")); //輸出 true
console.log(negPattern.test("-42")); //輸出 true
console.log(intPattern.test("-42"));

數(shù)值相關(guān)正則表達(dá)式

//可以是整數(shù)也可以是浮點(diǎn)數(shù)

//正數(shù)正則
var posPattern = /^\d*\.?\d+$/;
//負(fù)數(shù)正則
var negPattern = /^-\d*\.?\d+$/;
//數(shù)字正則
var numPattern = /^-?\d*\.?\d+$/;
console.log(posPattern.test("42.2"));
console.log(negPattern.test("-42.2"));
console.log(numPattern.test("-42.2"));

手機(jī)號(hào)

var myreg = /^(13[0-9]{1}|14[5|7|9]{1}|15[0-3|5-9]{1}|166|17[0-3|5-8]{1}|18[0-9]{1}|19[8-9]{1}){1}\d{8}$/;

身份證號(hào)

//身份證號(hào)(18位)正則
var cP = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
//輸出 true
console.log(cP.test("11010519880605371X"));

URL

//URL正則
var urlP= /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;
//輸出 true
console.log(urlP.test(http://caibaojian.com));

電子郵箱

//Email正則
var ePattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
//輸出 true
console.log(ePattern.test(99154507@qq.com));

中文

//包含中文正則
var cnPattern = /[\u4E00-\u9FA5]/;
//輸出 true
console.log(cnPattern.test("董董董"));

其它

整數(shù)或者小數(shù):^[0-9]+\.{0,1}[0-9]{0,2}$
只能輸入數(shù)字:"^[0-9]*$"罩驻。
只能輸入n位的數(shù)字:"^\d{n}$"穗酥。
只能輸入至少n位的數(shù)字:"^\d{n,}$"。
只能輸入m~n位的數(shù)字:惠遏。"^\d{m,n}$"
只能輸入零和非零開頭的數(shù)字:"^(0|[1-9][0-9]*)$"砾跃。
只能輸入有兩位小數(shù)的正實(shí)數(shù):"^[0-9]+(.[0-9]{2})?$"。
只能輸入有1~3位小數(shù)的正實(shí)數(shù):"^[0-9]+(.[0-9]{1,3})?$"爽哎。
只能輸入非零的正整數(shù):"^\+?[1-9][0-9]*$"蜓席。
只能輸入非零的負(fù)整數(shù):"^\-[1-9][]0-9"*$。
只能輸入長(zhǎng)度為3的字符:"^.{3}$"课锌。
只能輸入由26個(gè)英文字母組成的字符串:"^[A-Za-z]+$"厨内。
只能輸入由26個(gè)大寫英文字母組成的字符串:"^[A-Z]+$"。
只能輸入由26個(gè)小寫英文字母組成的字符串:"^[a-z]+$"渺贤。
只能輸入由數(shù)字和26個(gè)英文字母組成的字符串:"^[A-Za-z0-9]+$"雏胃。
只能輸入由數(shù)字、26個(gè)英文字母或者下劃線組成的字符串:"^\w+$"志鞍。
驗(yàn)證用戶密碼:"^[a-zA-Z]\w{5,17}$"正確格式為:以字母開頭瞭亮,長(zhǎng)度在6~18之間,只能包含字符固棚、數(shù)字和下劃線统翩。
驗(yàn)證是否含有^%&'',;=?$\"等字符:"[^%&'',;=?$\x22]+"。
只能輸入漢字:"^[\u4e00-\u9fa5]{0,}$"
驗(yàn)證Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"此洲。
驗(yàn)證InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"厂汗。
驗(yàn)證電話號(hào)碼:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正確格式為:"XXX-XXXXXXX"、"XXXX- XXXXXXXX"呜师、"XXX-XXXXXXX"娶桦、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
驗(yàn)證身份證號(hào)(15位或18位數(shù)字):"^\d{15}|\d{18}$"衷畦。
驗(yàn)證一年的12個(gè)月:"^(0?[1-9]|1[0-2])$"正確格式為:"01"~"09"和"1"~"12"栗涂。
驗(yàn)證一個(gè)月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正確格式為;"01"~"09"和"1"~"31"祈争。整數(shù)或者小數(shù):^[0-9]+\.{0,1}[0-9]{0,2}$
只能輸入數(shù)字:"^[0-9]*$"斤程。
只能輸入n位的數(shù)字:"^\d{n}$"。
只能輸入至少n位的數(shù)字:"^\d{n,}$"铛嘱。
只能輸入m~n位的數(shù)字:暖释。"^\d{m,n}$"
只能輸入零和非零開頭的數(shù)字:"^(0|[1-9][0-9]*)$"。
只能輸入有兩位小數(shù)的正實(shí)數(shù):"^[0-9]+(.[0-9]{2})?$"墨吓。
只能輸入有1~3位小數(shù)的正實(shí)數(shù):"^[0-9]+(.[0-9]{1,3})?$"。
只能輸入非零的正整數(shù):"^\+?[1-9][0-9]*$"纹磺。
只能輸入非零的負(fù)整數(shù):"^\-[1-9][]0-9"*$帖烘。
只能輸入長(zhǎng)度為3的字符:"^.{3}$"。
只能輸入由26個(gè)英文字母組成的字符串:"^[A-Za-z]+$"橄杨。
只能輸入由26個(gè)大寫英文字母組成的字符串:"^[A-Z]+$"秘症。
只能輸入由26個(gè)小寫英文字母組成的字符串:"^[a-z]+$"。
只能輸入由數(shù)字和26個(gè)英文字母組成的字符串:"^[A-Za-z0-9]+$"式矫。
只能輸入由數(shù)字乡摹、26個(gè)英文字母或者下劃線組成的字符串:"^\w+$"。
驗(yàn)證用戶密碼:"^[a-zA-Z]\w{5,17}$"正確格式為:以字母開頭采转,長(zhǎng)度在6~18之間聪廉,只能包含字符、數(shù)字和下劃線故慈。
驗(yàn)證是否含有^%&'',;=?$\"等字符:"[^%&'',;=?$\x22]+"板熊。
只能輸入漢字:"^[\u4e00-\u9fa5]{0,}$"
驗(yàn)證Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。
驗(yàn)證InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"察绷。
驗(yàn)證電話號(hào)碼:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正確格式為:"XXX-XXXXXXX"干签、"XXXX- XXXXXXXX"、"XXX-XXXXXXX"拆撼、"XXX-XXXXXXXX"容劳、"XXXXXXX"和"XXXXXXXX"。
驗(yàn)證身份證號(hào)(15位或18位數(shù)字):"^\d{15}|\d{18}$"闸度。
驗(yàn)證一年的12個(gè)月:"^(0?[1-9]|1[0-2])$"正確格式為:"01"~"09"和"1"~"12"竭贩。
驗(yàn)證一個(gè)月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正確格式為;"01"~"09"和"1"~"31"筋岛。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末娶视,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肪获,老刑警劉巖寝凌,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異孝赫,居然都是意外死亡较木,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門青柄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)伐债,“玉大人,你說(shuō)我怎么就攤上這事致开》逅” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵双戳,是天一觀的道長(zhǎng)虹蒋。 經(jīng)常有香客問(wèn)我,道長(zhǎng)飒货,這世上最難降的妖魔是什么魄衅? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮塘辅,結(jié)果婚禮上晃虫,老公的妹妹穿的比我還像新娘。我一直安慰自己扣墩,他們只是感情好哲银,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著沮榜,像睡著了一般盘榨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蟆融,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天草巡,我揣著相機(jī)與錄音,去河邊找鬼型酥。 笑死山憨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的弥喉。 我是一名探鬼主播郁竟,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼由境!你這毒婦竟也來(lái)了棚亩?” 一聲冷哼從身側(cè)響起蓖议,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎讥蟆,沒(méi)想到半個(gè)月后勒虾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瘸彤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年修然,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片质况。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡愕宋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出结榄,到底是詐尸還是另有隱情中贝,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布潭陪,位于F島的核電站雄妥,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏依溯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一瘟则、第九天 我趴在偏房一處隱蔽的房頂上張望黎炉。 院中可真熱鬧,春花似錦醋拧、人聲如沸慷嗜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)庆械。三九已至,卻和暖如春菌赖,著一層夾襖步出監(jiān)牢的瞬間缭乘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工琉用, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留堕绩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓邑时,卻偏偏與公主長(zhǎng)得像奴紧,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子晶丘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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