日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

正则表达式匹配身份证 电话号码 邮箱 住宅电话 邮编等

發布時間:2023/12/20 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 正则表达式匹配身份证 电话号码 邮箱 住宅电话 邮编等 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

身份證號碼的匹配
大陸的居民身份證號碼有兩種:18位和15位,15位的身份證號碼是老一代身份證號碼。

18 位和15位的區別在于兩個部分:第一,18位號碼的年份以4位計而15位號碼的年份為2位,如1987年在18位號碼中為‘1987’而在15位號碼中為 ‘87’,這里1987只是作為一個例子可能1987年及以后根本不存在15位號碼;第二處不同在于18位號碼的最后一位為數字校驗碼,15位號碼沒有數 字校驗位。

好吧,可能你還不知道身份證號碼各個部分代表著什么,那么讓我簡略地介紹一下。

身份證號碼總共有4個部分(15位號碼只有3部分),從左向右分別為:第一部分有6位,為居民在辦理身份證時戶口所在地的地址碼(什么是地址碼?自己到統計局去找吧,地址如下:http://www.stats.gov.cn/tjbz/index.htm); 第二部分有8位(15位號碼為6位),為居民出生日期碼;第三部分有3位,為數字順序碼,也就是同一天出生的人的一個排序,奇數代表男性而偶數代表女性; 第四部分也就是最后一部分有1位,為數字校驗碼,此部分只有18位號碼才有,關于數字校驗碼怎樣計算得出,稍后會詳述。

先 舉個例子吧,假設存在以下身份證號碼:35052519870101888X(15位的話為350525870101888),用‘-’號將各部分區分如 下:350525-19870101-888-X。其中,350525為地址碼,沒錯,到統計局查詢的結果是‘福建省永春縣’——一個桃園勝境,算了,不 廢話;19870101為出生日期碼,呵呵,1987年1月1日這一天出生的人肯定是有滴;888為順序碼,估計1987年1月1日第888個出生的人應 該沒有吧,倘若真的有,那真不是人,是神!!呵呵,估計我黨也不會給神這個號碼,不多說了,再多說可能要人神共怒了……好吧,那么X是什么呢?怎么有些人 的身份證號碼最后一位會突然冒出一個X呢,是這些人比較特殊嗎?答案是:不是的,也算是吧,倘若有一種個位數等于10,這些人也不用在身份證號碼的最后一 位被不明不白地加上一個X了,究竟是怎么一回事且聽我細細道來^_^

18位居民身份證號碼最后一位——數字校驗碼的計算方法:
1. 將身份證號碼的前17位數分別乘以以下系數:7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2;
2. 將以上分別相乘得到的結果相加;
3. 將以上相加的結果除以11,得出余數;
4. 以上得出的余數可能為0 - 10這11個數中的某一個數字。10是一個另類,因為我們的數字校驗位只有1位顯然需要一種替換方案,用1位將10換下,于是X派上用場了。注意了,數字校驗位并不就是余數!!所得的11個余數:
0,1,2,3,4,5,6,7,8,9,10 的數字校驗位分別為:
1,0,X,9,8,7,6,5,4,3,2

PS: 通過以上的計算,現在應該非常清楚了,身份證號碼的最后一位為X是因為在作校驗時所得的余數是2,顯然這些號碼也沒什么特別的嗎。需要強調一下的是,X并 不是英文字母哦,而是羅馬數字X,記住,它不是字母而是數字,但是,呵呵,我們一般用英文大寫字母X來表示羅馬數字X,囧nz……

讓我花點時間來校驗以上的身份證號碼:35052519870101888X是否正確吧,先聲明倘若證實可用千萬別拿去做假證,一切本人概不負責!

1.前17位分別乘以相應系數:3*7+5*9+0*10+5*5+2*8+5*4+1*2+9*1+8*6+7*3+0*7+1*9+0*10+1*5+8*8+8*4+8*2=333(假如沒算錯的話^_^)
2.將以上所得結果333除以11,得出余數:3
3.呵呵35052519870101888X這個號碼不是有效的身份證號碼,有效號碼應該為350525198701018889

好了,知道了居民身份證號碼各部分的意思后,我們終于可以動手尋求號碼驗證的解決方案了。

假設我們的系統并不知道輸入號碼之人的任何信息(如果系統還要求輸入籍貫和出生日期,還可以進一步進行檢驗真偽喔^_^)

首 先,地址碼的前2位是省級的編號,到統計局去查詢得知第1位非0,并且目前的范圍為1-9,9是國外的身份證號碼。第2位的范圍為0-7。統計局一般每一 年都會公布一次更新的地址碼,但對比多年來的地址碼可以看出地址碼基本上是不變的(要是變了,現有的身份證號碼豈不是都沒用了^_^)。我們的地址碼的正 則表達式可以這樣寫:/^[1-9][0-7]\d{4}/,其實,這么寫不夠精確,倘若要就目前的地址碼寫出精確的表達式,應該這么寫 /^((1[1-5])|(2[1-3])|(3[1-7])|(4[1-6])|(5[0-4])|(6[1-5])|71| (8[12])|91)\d{4}/,這樣寫顯然精確多了,但表達式長了很多,當然為求精確表達式長一點是可以接受的,但是假如統計局修改了省級地址碼, 那么該表達式要根據實際情況稍作改動,所幸省級地址碼應該是不會變的,呵呵,所以選擇哪一種表達式都是可以的,我這就不寫那么長的表達式了,所以選擇 /^[1-9][0-7]\d{4}/吧。

接下來就是日期了喔,呵呵,貌似之前寫過的日期匹配可以借鑒來用一下,當時的那個表達式如下:
/^((((19|20)\d{2})-(0?[13-9]|1[012])-(0?[1-9]|[12]\d|30))|(((19|20)\d{2})-(0?[13578]|1[02])-31)|(((19|20)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))-0?2-29))$/
這個表達式可以匹配1900-2099年的日期,還支持閏年。?
?

我 們的表達式不需要匹配那么長的時間,能夠匹配二十世紀的就夠了,什么,不知道二十世紀?1900-1999總該知道吧^_^為什么匹配了這個范圍就夠了 呢?去查一下居民身份證的歷史吧,我敢打保票1900-1999的范圍還太大了。至于二十一世紀的新一代,呵呵,就算他是2000年出生的,目前也就15 歲(有些算法是14歲,囧),這些人的號碼應該還打印在戶口簿里,拿出手也不會產生什么作用,再說,二十一世紀的人也不屑于我目前所寫的匹配^_^

好吧,廢話太多了,開始匹配日期吧。稍微修改了以上表達式:
/((19\d{2}(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(19\d{2}(0[13578]|1[02])31)|(19\d{2}02(0[1-9]|1\d|2[0-8]))|(19([13579][26]|[2468][048]|0[48])0229))/
?

正則表達式里沒有計算驗證的能力,所以對于順序碼,我們除了基本的匹配外無力于做什么,所以順序碼的表達式為:/\d{3}/

最后一位數字驗證碼——/(\d|X|x)?$/。之所以那么寫是因為,最后一位可能值為數字或X,但有些人可能習慣將X寫成小寫的x,我們必須視為正確,而最后的?是為了與15位號碼兼容,此時只需將15位號碼的年份用4位表示即可用我們以下整合的表達式進行匹配了——
/^[1-9][0-7]\d{4}((19\d{2}(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(19\d{2}(0[13578]|1[02])31)|(19\d{2}02(0[1-9]|1\d|2[0-8]))|(19([13579][26]|[2468][048]|0[48])0229))\d{3}(\d|X|x)?$/
地址碼精確一點的表達式:?
/^((1[1-5])|(2[1-3])|(3[1-7])|(4[1-6])|(5[0-4])|(6[1-5])|71|(8[12])|91)\d{4}((19\d{2}(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(19\d{2}(0[13578]|1[02])31)|(19\d{2}02(0[1-9]|1\d|2[0-8]))|(19([13579][26]|[2468][048]|0[48])0229))\d{3}(\d|X|x)?$/
?
區號+座機號碼+分機號碼:regexp="^(0[0-9]{2,3}/-)?([2-9][0-9]{6,7})+(/-[0-9]{1,4})?$"

手機(中國移動手機號碼):regexp="^((/(/d{3}/))|(/d{3}/-))?13[456789]/d{8}|15[89]/d{8}"

所有手機號碼:regexp="^((/(/d{3}/))|(/d{3}/-))?13[0-9]/d{8}|15[89]/d{8}"(新添加了158,159兩個號段)

((/d{11})|^((/d{7,8})|(/d{4}|/d{3})-(/d{7,8})|(/d{4}|/d{3})-(/d{7,8})-(/d{4}|/d{3}|/d{2}|/d{1})|(/d{7,8})-(/d{4}|/d{3}|/d{2}|/d{1}))$)

匹配格式:
11位手機號碼
3-4位區號,7-8位直播號碼,1-4位分機號
如:12345678901、1234-12345678-1234
?
1.用正則表達式限制只能輸入全角字符: οnkeyup="value=value.replace(/[^/uFF00-/uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/uFF00-/uFFFF]/g,''))"

2. 用正則表達式限制只能輸入數字:οnkeyup="value=value.replace(/[^/d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/d]/g,''))"

3. 用正則表達式限制只能輸入數字和英文:οnkeyup="value=value.replace(/[/W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/d]/g,''))"

4.計算字符串的長度(一個雙字節字符長度計2,ASCII字符計1)

String.prototype.len=function(){return this.replace([^/x00-/xff]/g,"aa").length;}

5.javascript中沒有像vbscript那樣的trim函數,我們就可以利用這個表達式來實現,如下:

String.prototype.trim = function()?
{?
return this.replace(/(^/s*)|(/s*$)/g, "");?
}

利用正則表達式分解和轉換IP地址:

6.下面是利用正則表達式匹配IP地址,并將IP地址轉換成對應數值的Javascript程序:

function IP2V(ip)?
{?
re=/(/d+)/.(/d+)/.(/d+)/.(/d+)/g //匹配IP地址的正則表達式?
if(re.test(ip))?
{?
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1?
}?
else?
{?
throw new Error("不是一個正確的IP地址!")?
}?
}

不過上面的程序如果不用正則表達式,而直接用split函數來分解可能更簡單,程序如下:

var ip="10.100.20.168"?
ip=ip.split(".")?
alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))?
正則表達式用于字符串處理、表單驗證等場合,實用高效。現將一些常用的表達式收集于此,以備不時之需。


匹配中文字符的正則表達式: [/u4e00-/u9fa5]?
評注:匹配中文還真是個頭疼的事,有了這個表達式就好辦了

匹配雙字節字符(包括漢字在內):[^/x00-/xff]?
評注:可以用來計算字符串的長度(一個雙字節字符長度計2,ASCII字符計1)

匹配空白行的正則表達式:/n/s*/r?
評注:可以用來刪除空白行

匹配HTML標記的正則表達式:<(/S*?)[^>]*>.*?<//1>|<.*? />?
評注:網上流傳的版本太糟糕,上面這個也僅僅能匹配部分,對于復雜的嵌套標記依舊無能為力

匹配首尾空白字符的正則表達式:^/s*|/s*$?
評注:可以用來刪除行首行尾的空白字符(包括空格、制表符、換頁符等等),非常有用的表達式

匹配Email地址的正則表達式:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*?
評注:表單驗證時很實用

匹配網址URL的正則表達式:[a-zA-z]+://[^/s]*?
評注:網上流傳的版本功能很有限,上面這個基本可以滿足需求

匹配帳號是否合法(字母開頭,允許5-16字節,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$?
評注:表單驗證時很實用

匹配國內電話號碼:/d{3}-/d{8}|/d{4}-/d{7}?
評注:匹配形式如 0511-4405222 或 021-87888822

匹配騰訊QQ號:[1-9][0-9]{4,}?
評注:騰訊QQ號從10000開始

匹配中國郵政編碼:[1-9]/d{5}(?!/d)?
評注:中國郵政編碼為6位數字

匹配身份證:/d{15}|/d{18}?
評注:中國的身份證為15位或18位

匹配ip地址:/d+/./d+/./d+/./d+?
評注:提取ip地址時有用

匹配特定數字:?
^[1-9]/d*$ //匹配正整數?
^-[1-9]/d*$ //匹配負整數?
^-?[1-9]/d*$ //匹配整數?
^[1-9]/d*|0$ //匹配非負整數(正整數 + 0)?
^-[1-9]/d*|0$ //匹配非正整數(負整數 + 0)?
^[1-9]/d*/./d*|0/./d*[1-9]/d*$ //匹配正浮點數?
^-([1-9]/d*/./d*|0/./d*[1-9]/d*)$ //匹配負浮點數?
^-?([1-9]/d*/./d*|0/./d*[1-9]/d*|0?/.0+|0)$ //匹配浮點數?
^[1-9]/d*/./d*|0/./d*[1-9]/d*|0?/.0+|0$ //匹配非負浮點數(正浮點數 + 0)?
^(-([1-9]/d*/./d*|0/./d*[1-9]/d*))|0?/.0+|0$ //匹配非正浮點數(負浮點數 + 0)?
評注:處理大量數據時有用,具體應用時注意修正

匹配特定字符串:?
^[A-Za-z]+$ //匹配由26個英文字母組成的字符串?
^[A-Z]+$ //匹配由26個英文字母的大寫組成的字符串?
^[a-z]+$ //匹配由26個英文字母的小寫組成的字符串?
^[A-Za-z0-9]+$ //匹配由數字和26個英文字母組成的字符串?
^/w+$ //匹配由數字、26個英文字母或者下劃線組成的字符串?
評注:最基本也是最常用的一些表達式

匹配中文字符的正則表達式: [/u4e00-/u9fa5]

匹配雙字節字符(包括漢字在內):[^/x00-/xff]

匹配空行的正則表達式:/n[/s| ]*/r

匹配HTML標記的正則表達式:/<(.*)>.*<///1>|<(.*) //>/

匹配首尾空格的正則表達式:(^/s*)|(/s*$)

匹配Email地址的正則表達式:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*

匹配網址URL的正則表達式:http://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)?


^/d+$ //匹配非負整數(正整數 + 0)?
^[0-9]*[1-9][0-9]*$ //匹配正整數?
^((-/d+)|(0+))$ //匹配非正整數(負整數 + 0)?
^-[0-9]*[1-9][0-9]*$ //匹配負整數?
^-?/d+$ //匹配整數?
^/d+(/./d+)?$ //匹配非負浮點數(正浮點數 + 0)?
^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$ //匹配正浮點數?
^((-/d+(/./d+)?)|(0+(/.0+)?))$ //匹配非正浮點數(負浮點數 + 0)?
^(-(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*)))$ //匹配負浮點數?
^(-?/d+)(/./d+)?$ //匹配浮點數?
^[A-Za-z]+$ //匹配由26個英文字母組成的字符串?
^[A-Z]+$ //匹配由26個英文字母的大寫組成的字符串?
^[a-z]+$ //匹配由26個英文字母的小寫組成的字符串?
^[A-Za-z0-9]+$ //匹配由數字和26個英文字母組成的字符串?
^/w+$ //匹配由數字、26個英文字母或者下劃線組成的字符串?
^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$

?

"^/d+$" //非負整數(正整數 + 0)?
"^[0-9]*[1-9][0-9]*$" //正整數?
"^((-/d+)|(0+))$" //非正整數(負整數 + 0)?
"^-[0-9]*[1-9][0-9]*$" //負整數?
"^-?/d+$" //整數?
"^/d+(/./d+)?$" //非負浮點數(正浮點數 + 0)?
"^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮點數?
"^((-/d+(/./d+)?)|(0+(/.0+)?))$" //非正浮點數(負浮點數 + 0)?
"^(-(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //負浮點
數?
"^(-?/d+)(/./d+)?$" //浮點數?
"^[A-Za-z]+$" //由26個英文字母組成的字符串?
"^[A-Z]+$" //由26個英文字母的大寫組成的字符串?
"^[a-z]+$" //由26個英文字母的小寫組成的字符串?
"^[A-Za-z0-9]+$" //由數字和26個英文字母組成的字符串?
"^/w+$" //由數字、26個英文字母或者下劃線組成的字符串?
"^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$" //email地址?
"^[a-zA-z]+://(/w+(-/w+)*)(/.(/w+(-/w+)*))*(/?/S*)?$" //url?
/^13/d{9}$/gi手機號正則表達式
public static bool IsValidMobileNo(string MobileNo)
{
?? const string regPattern = @"^(130|131|132|133|134|135|136|137|138|139)/d{8}$";
?? return Regex.IsMatch(MobileNo, regPattern);
}
正則表達式--驗證手機號碼:13[0-9]{9}
實現手機號前帶86或是+86的情況:^((/+86)|(86))?(13)/d{9}$
電話號碼與手機號碼同時驗證:(^(/d{3,4}-)?/d{7,8})$|(13[0-9]{9})?
提取信息中的網絡鏈接:(h|H)(r|R)(e|E)(f|F) *= *('|")?(/w|//|//|/.)+('|"| *|>)???
提取信息中的郵件地址:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*??
提取信息中的圖片鏈接:(s|S)(r|R)(c|C) *= *('|")?(/w|//|//|/.)+('|"| *|>)?
提取信息中的IP地址:(/d+)/.(/d+)/.(/d+)/.(/d+)????
提取信息中的中國手機號碼:(86)*0*13/d{9}????
提取信息中的中國固定電話號碼:(/(/d{3,4}/)|/d{3,4}-|/s)?/d{8}????
提取信息中的中國電話號碼(包括移動和固定電話):(/(/d{3,4}/)|/d{3,4}-|/s)?/d{7,14}????
提取信息中的中國郵政編碼:[1-9]{1}(/d+){5}????
提取信息中的中國身份證號碼:/d{18}|/d{15}????
提取信息中的整數:/d+????
提取信息中的浮點數(即小數):(-?/d*)/.?/d+????
提取信息中的任何數字 :(-?/d*)(/./d+)???
提取信息中的中文字符串:[/u4e00-/u9fa5]*????
提取信息中的雙字節字符串 (漢字):[^/x00-/xff]*

總結

以上是生活随笔為你收集整理的正则表达式匹配身份证 电话号码 邮箱 住宅电话 邮编等的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产成人在线免费 | 国产成人自拍视频在线 | 91一区二区在线观看 | 大陆熟妇丰满多毛xxxⅹ | 国产色频 | 天堂久久精品 | 久久久精品人妻av一区二区三区 | 欧美福利视频一区二区 | 高清视频免费在线观看 | www.天堂在线 | 粗喘呻吟撞击猛烈疯狂 | 日韩色小说 | 亲嘴扒胸摸屁股激烈网站 | 一道本av在线 | 国产三级在线免费观看 | 顶级嫩模啪啪呻吟不断好爽 | 韩国妻子的朋友 | 亚洲色图校园春色 | 亚洲精品中文字幕 | 一区二区欧美日韩 | 26uuu国产精品视频 | 黄色一级片国产 | 极品蜜桃臀肥臀-x88av | 欧美视频一区二区三区四区在线观看 | 欧美在线黄色 | 亚洲日本不卡 | 国产免费黄网站 | 成人av视屏| 妺妺窝人体色www在线小说 | 打白嫩屁屁网站视频短裙 | 99久久精品免费看国产交换 | 性做久久久久久久免费看 | 香港三级日本三级三69 | 九七人人爽| 亚洲精品第一 | 色播视频在线播放 | 国产999在线观看 | 久草网址| 波多野 在线 | 日韩久久精品一区二区 | 国产精品18久久久久久无码 | 欧美激情国产一区 | 国产操女人 | 日日噜噜夜夜爽爽 | 国产成人免费看一级大黄 | 葵司免费一区二区三区四区五区 | 在线观看国产一区二区三区 | 依依成人综合网 | 五月婷婷欧美 | 免费观看理伦片在线播放视频软件 | 美女少妇一区二区 | 日韩av无码一区二区三区不卡 | 裸体的日本在线观看 | 理论片毛片 | 欧美激情 国产精品 | 日本少妇b | 日韩性色| 少妇高潮灌满白浆毛片免费看 | 毛片在线观看网站 | 国产91在线高潮白浆在线观看 | 久久99久久99精品中文字幕 | 开心综合网 | 国产又粗又猛又爽视频 | 国产人成 | 国产亚洲在线观看 | 人成网站在线观看 | 日韩在线电影一区 | 美女黄色片网站 | 国产视频一区二区视频 | h视频在线观看网站 | 精品国产乱码久久久人妻 | 超碰2020| 成人免费在线播放视频 | 国模av在线 | av观看网| 韩国av一区二区三区 | 爱情岛论坛自拍亚洲品质极速最新章 | 五月天激情综合 | 午夜秋霞影院 | 苏晴忘穿内裤坐公交车被揉到视频 | 日批网址| 亚洲第三十七页 | fc2ppv在线播放 | 日韩一区二区免费在线观看 | 欧美久久久久久久久中文字幕 | 特黄aaaaaaaaa毛片免 | 落日余晖图片 | 欧美第一页浮力影院 | 国产欧美一区二区三区沐欲 | 亚洲aaaa级特黄毛片 | 成人欧美一区二区 | 欧美人禽杂交狂配 | 亚洲久热 | 亚洲女同志亚洲女同女播放 | 亚洲色图av在线 | 色综合色综合色综合 | 成人av在线网址 | 深夜视频在线免费 | 深夜视频免费在线观看 |