1. 程式人生 > >js一些常用的校驗(工作中用的較多的,並附常用正則表示式)

js一些常用的校驗(工作中用的較多的,並附常用正則表示式)

做web的經常會遇到一些js校驗,比如身份證呀,手機號呀,郵箱呀等等,分享下我工作中遇到的這些,整理了下

/*
 * 校驗是否為空(null/空串)
 */
var checkNull = function(str){
	if(str == null || str == ""){
		return false;
	}
	return true;
}

/*
 * 校驗是否為純數字
 * js的isNaN函式
 */
var checkNum = function(num){
	if(isNaN(num)){
		return false;
	}
	return true;
}

/*
 * 校驗是否為純數字(正則)
 */
var checkNum2 = function(num){
	 var re = /^[0-9]+.?[0-9]*$/; //判斷字串是否為數字 (判斷正整數 /^[1-9]+[0-9]*]*$/)
	 if (!re.test(num)){
	    return false;
	 }
	return true;
}

/*
 * 檢驗手機號
 */
var checkPhone = function(phone){
	var reg = /^1[3|4|5|7|8][0-9]{9}$/; //驗證規則,第一位是【1】開頭,第二位有【3,4,5,7,8】,第三位及以後可以是【0-9】
//	var reg = /^1[0-9]{10}$/;//不驗證第二位,防止幾年後新增號碼段
	if(!reg.test(phone)){
		return false;
	}
	return true;
}

/*
 * 驗證座機號
 */
var checkTel = function(tel) {
	var reg = /^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$/;
	if (!reg.test(tel)) {
		return false;
	}
	return true;
}

/*
 * 校驗ip
 */
var checkIp = function(ip){  
    var reSpaceCheck = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;  
    if (reSpaceCheck.test(ip)){  
        ip.match(reSpaceCheck);  
        if (RegExp.$1 <= 255 && RegExp.$1 >= 0 && RegExp.$2 <= 255 && RegExp.$2 >=0  
          &&RegExp.$3 <= 255 && RegExp.$3 >= 0 && RegExp.$4 <= 255 && RegExp.$4>=0){  
            return true;   
        }else{  
            return false;  
        }  
    }else{  
        return false;  
    }  
} 

/*
 * 檢驗url地址
 */
var checkUrl = function(url) {
	var reg = /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/;
	if (!reg.test(url)) {
		return false;
	}
	return true;
}

/*
 * 檢驗身份證
 */
var checkIdCard = function(idCard) {
	var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"內蒙古",21:"遼寧",22:"吉林",23:"黑龍江",31:"上海",32:"江蘇",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山東",41:"河南",42:"湖北",43:"湖南",44:"廣東",45:"廣西",46:"海南",50:"重慶",51:"四川",52:"貴州",53:"雲南",54:"西藏",61:"陝西",62:"甘肅",63:"青海",64:"寧夏",65:"新疆",71:"臺灣",81:"香港",82:"澳門",91:"國外"}
	var iSum = 0;
	var info = "";
	if (!/^\d{17}(\d|x)$/i.test(idCard)){
		return false;//身份證長度或格式錯誤
	}
	idCard = idCard.replace(/x$/i, "a");
	if (aCity[parseInt(idCard.substr(0, 2))] == null){
		return false;//身份證地區非法;
	}
	var sBirthday = idCard.substr(6, 4) + "-" + Number(idCard.substr(10, 2)) + "-" + Number(idCard.substr(12, 2));
	var d = new Date(sBirthday.replace(/-/g, "/"));
	if (sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate())){
		return false;//身份證上的出生日期非法;
	}
	for (var i = 17; i >= 0; i--){
		iSum += (Math.pow(2, i) % 11) * parseInt(idCard.charAt(17 - i), 11);
	}
	if (iSum % 11 != 1){
		return false;//身份證號非法; 
	}
	
	return true;
	
}

/*
 * 檢驗郵箱
 */
var checkEmail = function(emailStr){
	var reg = /^([a-zA-Z0-9_-])
[email protected]
([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/; if(!reg.test(emailStr)){ return false; } return true; } /* * 檢驗日期 * 格式為YYYY-MM-DD */ var checkDate = function(dateValue) { var result = dateValue.match(/((^((1[8-9]\d{2})|([2-9]\d{3}))(-)(10|12|0?[13578])(-)(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(11|0?[469])(-)(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(0?2)(-)(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)(-)(0?2)(-)(29)$)|(^([3579][26]00)(-)(0?2)(-)(29)$)|(^([1][89][0][48])(-)(0?2)(-)(29)$)|(^([2-9][0-9][0][48])(-)(0?2)(-)(29)$)|(^([1][89][2468][048])(-)(0?2)(-)(29)$)|(^([2-9][0-9][2468][048])(-)(0?2)(-)(29)$)|(^([1][89][13579][26])(-)(0?2)(-)(29)$)|(^([2-9][0-9][13579][26])(-)(0?2)(-)(29)$))/); if (result == null) { return false; } return true; } /* * 檢驗金額 */ var checkMoney = function(money) { if (money == '') { return false; } money = money.replace(/(^\s*)|(\s*$)/g, ""); var reg = /^[0-9]*\.?[0-9]{0,2}$/; if (!checkNum(money)) { return false; } if (money.length > 3) { if (money.substr(0, 1) == "0") { if (money.substr(3, money.length).length > 2) { return false; } } } if(!reg.test(money)){ return false; } return true; } /* * 檢驗否是漢字 */ var checkCharacter = function(charValue) { var reg = /^[\u4e00-\u9fa5]{0,}$/; if(!reg.test(charValue)){ return false; } return true; }


以下是平時常用的正則表示式

一、校驗數字的表示式

1 數字:^[0-9]*$ 

2 n位的數字:^\d{n}$

3 至少n位的數字:^\d{n,}$ 

4 m-n位的數字:^\d{m,n}$ 

5 零和非零開頭的數字:^(0|[1-9][0-9]*)$ 

6 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 

7 帶1-2位小數的正數或負數:^(\-)?\d+(\.\d{1,2})?$ 

8 正數、負數、和小數:^(\-|\+)?\d+(\.\d+)?$ 

9 有兩位小數的正實數:^[0-9]+(.[0-9]{2})?$

10 有1~3位小數的正實數:^[0-9]+(.[0-9]{1,3})?$

11 非零的正整數:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$

12 非零的負整數:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$

13 非負整數:^\d+$ 或 ^[1-9]\d*|0$

14 非正整數:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$

15 非負浮點數:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$

16 非正浮點數:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$

17 正浮點數:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

18 負浮點數:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$

19 浮點數:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

二、校驗字元的表示式

1 漢字:^[\u4e00-\u9fa5]{0,}$ 

2 英文和數字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$ 

3 長度為3-20的所有字元:^.{3,20}$ 

4 由26個英文字母組成的字串:^[A-Za-z]+$ 

5 由26個大寫英文字母組成的字串:^[A-Z]+$ 

6 由26個小寫英文字母組成的字串:^[a-z]+$ 

7 由數字和26個英文字母組成的字串:^[A-Za-z0-9]+$ 

8 由數字、26個英文字母或者下劃線組成的字串:^\w+$ 或 ^\w{3,20}$ 

9 中文、英文、數字包括下劃線:^[\u4E00-\u9FA5A-Za-z0-9_]+$

10 中文、英文、數字但不包括下劃線等符號:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$

11 可以輸入含有^%&',;=?$\"等字元:[^%&',;=?$\x22]+

12 禁止輸入含有~的字元:[^~\x22]+

三、特殊需求表示式

1 Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ 

2 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.? 

3 InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ 

4 手機號碼:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$ 

5 電話號碼("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$  

6 國內電話號碼(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7} 

7 身份證號(15位、18位數字):^\d{15}|\d{18}$ 

8 短身份證號碼(數字、字母x結尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$ 

9 帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

10 密碼(以字母開頭,長度在6~18之間,只能包含字母、數字和下劃線):^[a-zA-Z]\w{5,17}$

11 強密碼(必須包含大小寫字母和數字的組合,不能使用特殊字元,長度在8-10之間):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

12 日期格式:^\d{4}-\d{1,2}-\d{1,2}

13 一年的12個月(01~09和1~12):^(0?[1-9]|1[0-2])$

14 一個月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$

15 錢的輸入格式:

16 1.有四種錢的表示形式我們可以接受:"10000.00" 和 "10,000.00", 和沒有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$

17 2.這表示任意一個不以0開頭的數字,但是,這也意味著一個字元"0"不通過,所以我們採用下面的形式:^(0|[1-9][0-9]*)$

18 3.一個0或者一個不以0開頭的數字.我們還可以允許開頭有一個負號:^(0|-?[1-9][0-9]*)$

19 4.這表示一個0或者一個可能為負的開頭不為0的數字.讓使用者以0開頭好了.把負號的也去掉,因為錢總不能是負的吧.下面我們要加的是說明可能的小數部分:^[0-9]+(.[0-9]+)?$

20 5.必須說明的是,小數點後面至少應該有1位數,所以"10."是不通過的,但是 "10" 和 "10.2" 是通過的:^[0-9]+(.[0-9]{2})?$

21 6.這樣我們規定小數點後面必須有兩位,如果你認為太苛刻了,可以這樣:^[0-9]+(.[0-9]{1,2})?$

22 7.這樣就允許使用者只寫一位小數.下面我們該考慮數字中的逗號了,我們可以這樣:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$

23 8.1到3個數字,後面跟著任意個 逗號+3個數字,逗號成為可選,而不是必須:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$

24 備註:這就是最終結果了,別忘了"+"可以用"*"替代如果你覺得空字串也可以接受的話(奇怪,為什麼?)最後,別忘了在用函式時去掉去掉那個反斜槓,一般的錯誤都在這裡

25 xml檔案:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$

26 中文字元的正則表示式:[\u4e00-\u9fa5]

27 雙位元組字元:[^\x00-\xff] (包括漢字在內,可以用來計算字串的長度(一個雙位元組字元長度計2,ASCII字元計1))

28 空白行的正則表示式:\n\s*\r (可以用來刪除空白行)

29 HTML標記的正則表示式:<(\S*?)[^>]*>.*?</\1>|<.*? /> (網上流傳的版本太糟糕,上面這個也僅僅能部分,對於複雜的巢狀標記依舊無能為力)

30 首尾空白字元的正則表示式:^\s*|\s*$或(^\s*)|(\s*$) (可以用來刪除行首行尾的空白字元(包括空格、製表符、換頁符等等),非常有用的表示式)

31 騰訊QQ號:[1-9][0-9]{4,} (騰訊QQ號從10000開始)

32 中國郵政編碼:[1-9]\d{5}(?!\d) (中國郵政編碼為6位數字) 


相關推薦

js一些常用工作中用常用表示式

做web的經常會遇到一些js校驗,比如身份證呀,手機號呀,郵箱呀等等,分享下我工作中遇到的這些,整理了下 /* * 校驗是否為空(null/空串) */ var checkNull = function(str){ if(str == null || str ==

進行一次性碼的session、時間戳、隨機數、字元快取、繪畫

<!DOCTYPE html> <html> <head> <title>MyHtml.html</title> <meta http-equiv="keywords" content="keyword1,

js實驗-表單驗證表示式

<!DOCTYPE html> <html lang="en"> <head> <title>Document</title> </head> <script src="./1.js"></s

python之re模組表示式常用函式

1、compile() 編譯正則表示式模式,返回一個物件的模式。(可以把那些常用的正則表示式編譯成正則表示式物件,這樣可以提高一點效率。) 格式: re.compile(pattern,flags=0) pattern: 編譯時用的表示式字串。 flags 編譯標誌位,用於修改正

驗證URL連結和IP有效性的JS程式碼表示式

#js驗證一個URl字串是否有效 function isValidURL(url){ var urlRegExp=/^((https|http|ftp|rtsp|mms)?:\/\/)+[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+

從零開始的全棧工程師——js表示式

正則 就是一條規則 用來檢驗字串的格式 目標就是字串 只要是通過表單提交的資料 都是字串1.正則定義var reg = new RegExp( )var reg = /格式/ <--簡寫   2.正則的方法兩大功能:一個是匹配 匹配成功就是true 第二個是捕獲 如果有就拿出來test(

JS: RegExp表示式

RegExp語法(包含ES2018標準) 注意:本次所有程式碼都僅在Chrome 70中進行測試 正則表示式是什麼? 正則表示式是用於匹配字串中字元組合的模式。(mdn) 簡單來說,正則表示式是用來提取、捕獲文字(匹配字元)的。 建立: 字面量:let regex = / pattern / flag

常用模組3和之前的12一起食用效果更佳

本節主要內容1. 正則表示式2. re模組的使⽤3. ⼀堆練習 一、正則表示式   ⾸先, 我們在⽹⻚上進⾏註冊或者登陸的時候經常能看到⼀些格式上的錯誤提⽰. 比如:你在註冊百度賬號的時候https://passport.baidu.com/v2/?reg&regType=1&tpl=wk

轉載js文字框輸入表示式

有時需要限制文字框輸入內容的型別,本節分享下正則表示式限制文字框只能輸入數字、小數點、英文字母、漢字等程式碼。 例如,輸入大於0的正整數 複製程式碼 程式碼如下: 1,文字框只能輸入數字程式碼(小數點也不能輸入) 複製程式碼 程式碼如下: 2,

JS高階表示式

本文參考自: 原文地址 正則表示式 第1章 什麼是正則表示式 1.1 概述 <body>    <img src="1.png" alt=""> </body> <script>    var img = docu

彙編實現32位 加法呼叫int 10h 輸出結果

定義雙子型別:  A DD 21111112H  B DD 11111111H 上面的A和B都是32位,而ax,dx都是16位,所以需要把高16位和低16位分開進行加法。其中先處理低16位,用add。高16位可能會有進位,所以用adc。 A 32位數

Python 爬蟲 爬取單個基因 表格資料的生物學功能 urllib+表示式

Python 爬蟲 爬取單個基因的生物學功能(urllib+正則表示式): import re import urllib from urllib import request url = 'https://www.ncbi.nlm.nih.gov/gene/?term=FUT1'

Python爬蟲表示式

Python爬蟲(正則表示式) 最近接觸爬蟲比較多,下面我來展示一個剛爬取的成果,使用正則表示式的方法,希望對剛開始接觸爬蟲的小夥伴有所幫助,同時希望大佬們給予點評和指導 接下來,步入正題,使用正則表示式爬取資料是一種原始且有效的方法,正則表示式的作用即字元匹配,匹配出你想得到的

應該是目前最詳細的表示式語音視訊講解教程

(轉)應該是目前最詳細的(正則表示式)語音視訊講解教程 優酷線上地址: http://v.youku.com/v_show/id_XMzg2ODE4MTQ5Mg==.html?x&sharefrom=android&sharekey=a9c982b1c99597d3e1b

【知識積累】、深入Regex表示式

\:將下一個字元標記符、或一個向後引用、或一個八進位制轉義符。例如,“\\n”匹配\n。“\n”匹配換行符。序列“\\”匹配“\”而“\(”則匹配“(”。即相當於多種程式語言中都有的“轉義字元”的概念。 ^:匹配輸入字串的開始位置。如果設定了RegExp物件的Multiline屬性,^也匹配“\n

【知識積累】、瞭解Regex表示式

一、正則表示式簡介 一種可以用於模式匹配和替換的規範,由普通字元 + 特殊字元構成一個模板,用於對目標字串進行匹配、查詢、替換、判斷。 原始碼:JDK1.4中的java.util.regex下的Pattern和Matcher類。 二、常用語法 1、字元取值範圍 [abc]:表示可能是a

Python:re模組表示式

#!/usr/bin/env python # coding:UTF-8 """ @version: python3.x @author:曹新健 @contact: [email protected] @software: PyCharm @file: re模組簡介.py @time:

動態保留整數位以及動態保留小數位然後可可負運用表示式

<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>使用者註冊</title> <script src="http://libs.baidu.com/jquery

python進階爬蟲表示式

一、正則表示式的基本知識: 1、正則表示式是一種高度專業化的程式語言,並不是只在python語言中存在,而python需要插入 re 模組才能使用 正則表示式。 2、正則表示式只能處理字串,用於模糊匹配。 3、正則表示式的區間是閉區間。 二、正則表示式組成:   &nb

筆記Python核心程式設計 第 1 部分 通用應用主題 1 章 表示式

                     Python核心程式設計 第 1 部分 通用應用主