除正常的數字(digit)以外,還有可能包括正、負號,科學計數法,小數位,甚至用逗號分隔千分位。html
邏輯規則:git
知足上述條件檢驗數字的正則表達式爲:^[+-]?\d+(,\d+)*(.\d+(e\d+)?)?$正則表達式
符合該條件的example包括:瀏覽器
且過濾掉小數點重複出現屢次,科學技術法不合規或重複出現屢次,非數字如720p的字符串
此處尤爲要注意科學的條件,前面必須是合法小數後面是e和次冪,注意次冪必須有。服務器
美國的電話號碼規則:總計10位數字,但有可能帶有國家號碼1。能夠接受的輸入格式包括:dom
知足上述條件檢驗美國電話的正則表達式爲:^(+?1[\s-])?(?\d{3})?[\s-]?\d{3}[\s-]?\d{4}$ide
進一步能夠將國家號的驗證修改成(+?\d+[\s-])?,這樣就能夠支持諸如+86, 86 , 86-這樣的格式了。函數
中國的手機規則:總計11位數字,通常狀況下不加上任何特殊符號的分隔。若是僅考慮如下4種格式:翻譯
知足上述條件檢驗中國手機號碼的正則表達式爲:^(+86[\s-]?)?\d{11}$code
因爲工做須要,更詳細的查閱了RFC對於郵件地址的標準要求。Google了好久竟然始終沒有找到一份靠譜的中文翻譯。在此共享給你們,但願你們不用再去痛苦的翻那RFC晦澀的文檔。
根據RFC 3696的規定,郵件地址(Email Address)被@符號分割爲如下兩個組成部分:local name和domain name.
Local Name
Domain Name
對於平常使用中,忽略Local Name第4點的要求1和Domain Name對域名合法性的過濾,可使用以下正則表達式檢驗Email的合法性:
^[A-Za-z0-9!#$%&'+/=?^_`{|}~-]+(.[A-Za-z0-9!#$%&'+/=?^_`{|}~-]+)*@([A-Za-z0-9]+(?:-[A-Za-z0-9]+)?.)+[A-Za-z0-9]+(-[A-Za-z0-9]+)?$
若是使用Javascript的話,能夠經過split函數,進一步檢驗每一部分的長度。
isemail: function(string){ if(typeof string === "string"){ var regex = /^[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*@([A-Za-z0-9]+(?:-[A-Za-z0-9]+)?\.)+[A-Za-z0-9]+(?:-[A-Za-z0-9]+)?$/; var temp = string.split("@"); return regex.test(string) && temp[0].length <= 64 && temp[1].length <= 255; } else{ return false; } }
郵件的格式較爲複雜,雖然實際上容許多級域名,只要長度保證在255個字符之內便可。不過更加常見的狀況是,考慮@前面使用字符和.的狀況,以及@後面可能會有二級域名的狀況。若是不要求嚴格性而只是起到對於用戶的提示做用的話,知足上述條件檢驗郵件的正則表達式爲:^[\w.]+(+[\w.]+)?@\w+(.\w+){1,2}$
若是可能的話,理解了原理以後,仍是更加推薦使用成熟的庫自帶的email檢驗函數,畢竟重複造輪子不是一件很是有效率的事情。
不一樣強度的密碼,
要求至少包含數字或字母:[\da-zA-Z]\d+[a-zA-Z]+[\da-zA-Z]
必須數字、字母和特殊字符3種混排的:
(\d+[a-zA-Z]+[-=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+) #數字開頭 |(\d+[-
=\[];',./~!@#$%^&()_+|{}:"<>?]+[a-zA-Z]+) #數字開頭
|([a-zA-Z]+\d+[-=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+) #字母開頭 |([a-zA-Z]+[-
=\[];',./~!@#$%^&()+|{}:"<>?]+\d+) #字母開頭
|([-=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+\d+[a-zA-Z]+) #特殊字符開頭 |([-
=\[];',./~!@#$%^&*()+|{}:"<>?]+[a-zA-Z]+\d+) #特殊字符開頭
IP地址是由4個使用句號(.)分割的數字序列組成,每段的數值取值在0-255之間。
因爲數字會被當成字符看待,而沒有大小關係,使用正則表達式檢驗數字範圍是一件很是麻煩的事情。
檢驗IP地址的正則表達式以下:
(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9]).{3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])
使用Javascript,稍微優雅一點的表達方式
ip: function(string){ var octet = '(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])'; var ip = '(?:' + octet + '\\.){3}' + octet; var ipRE = new RegExp( '^' + ip + '$' ); return ipRE.test(string); }
HTML更爲推薦使用其餘的方式而非正則表達式進行過濾。
獲取Tag:<(\w+)
獲取Tag內容:>([\w\s])<
獲取Attribute的值:='([\w://.])
2014年9月5日修改
本來的正則表達式中沒有考慮到yeelan0319@sf.com.32y8498這樣的內容也會被斷定爲true。仍是對於正則表達式並不是「所有字符串匹配」,而是隻要出現「符合正則表達式規定的內容便可」的理解不夠透徹。說來講去最後好像仍是推薦使用已經成熟的庫比較好,畢竟重複造輪子是一件太過於低效率的事情
2015年3月4日修改
根據RFC規定,更新了符合RFC詳細要求的email的正則表達式。
添加了IP地址的檢驗正則
雖然此處沒有考慮Local Name的第4點要求,可是RFC中其實規定,瀏覽器(Client Side)端檢驗不該該拒絕該格式的輸入,而應該交由郵件服務器實際在執行過程當中判斷其合法性,由於這樣的格式實際上是徹底合法的。此處實際上是我偷懶了。 ↩