常用正則

hello,大家好扇救,正則想必是每個(gè)程序員的苦惱装蓬,每次都要去反復(fù)敲定才能使用捡偏,這是我平常收集使用的一些正則表達(dá)式現(xiàn)在分享給大家


整數(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"*$。

只能輸入長度為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}$"正確格式為:以字母開頭砰识,長度在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)證電話號碼:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正確格式為:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"砂竖、"XXX-XXXXXXX"真椿、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"乎澄。

驗(yàn)證身份證號(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"解恰。?匹配中文字符的正則表達(dá)式: [\u4e00-\u9fa5]

匹配雙字節(jié)字符(包括漢字在內(nèi)):[^\x00-\xff]

應(yīng)用:計(jì)算字符串的長度(一個(gè)雙字節(jié)字符長度計(jì)2,ASCII字符計(jì)1)

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

匹配空行的正則表達(dá)式:\n[\s| ]*\r

匹配html標(biāo)簽的正則表達(dá)式:<(.*)>(.*)<\/(.*)>|<(.*)\/>

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

應(yīng)用:javascript中沒有像vbscript那樣的trim函數(shù)浙于,我們就可以利用這個(gè)表達(dá)式來實(shí)現(xiàn)护盈,如下:

String.prototype.trim = function()

{

return this.replace(/(^\s*)|(\s*$)/g, "");

}

利用正則表達(dá)式分解和轉(zhuǎn)換IP地址:

下面是利用正則表達(dá)式匹配IP地址,并將IP地址轉(zhuǎn)換成對應(yīng)數(shù)值的Javascript程序:

function IP2V(ip)

{

re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正則表達(dá)式

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("Not a valid IP address!")

}

}

不過上面的程序如果不用正則表達(dá)式羞酗,而直接用split函數(shù)來分解可能更簡單腐宋,程序如下:

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))

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

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

利用正則表達(dá)式限制網(wǎng)頁表單里的文本框輸入內(nèi)容:

用正則表達(dá)式限制只能輸入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"

用正則表達(dá)式限制只能輸入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"

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

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

用正則表達(dá)式限制只能輸入中文,數(shù)字和英文:onkeyup="value=value.replace(/[^\w\d\u4E00-\u9FA5]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\w\d\u4E00-\u9FA5]]/g,''))"

匹配中文字符的正則表達(dá)式: [\u4e00-\u9fa5]

評注:匹配中文還真是個(gè)頭疼的事,有了這個(gè)表達(dá)式就好辦了


匹配雙字節(jié)字符(包括漢字在內(nèi)):[^\x00-\xff]

評注:可以用來計(jì)算字符串的長度(一個(gè)雙字節(jié)字符長度計(jì)2檀轨,ASCII字符計(jì)1)


匹配空白行的正則表達(dá)式:\n\s*\r

評注:可以用來刪除空白行


匹配HTML標(biāo)記的正則表達(dá)式:<(\S*?)[^>]*>.*?|<.*? />

評注:網(wǎng)上流傳的版本太糟糕胸竞,上面這個(gè)也僅僅能匹配部分,對于復(fù)雜的嵌套標(biāo)記依舊無能為力


匹配首尾空白字符的正則表達(dá)式:^\s*|\s*$

評注:可以用來刪除行首行尾的空白字符(包括空格裤园、制表符撤师、換頁符等等),非常有用的表達(dá)式


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

評注:表單驗(yàn)證時(shí)很實(shí)用


匹配網(wǎng)址URL的正則表達(dá)式:[a-zA-z]+://[^\s]*

評注:網(wǎng)上流傳的版本功能很有限拧揽,上面這個(gè)基本可以滿足需求


匹配帳號是否合法(字母開頭剃盾,允許5-16字節(jié),允許字母數(shù)字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

評注:表單驗(yàn)證時(shí)很實(shí)用


匹配國內(nèi)電話號碼:\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位數(shù)字


匹配身份證:\d{15}|\d{18}

評注:中國的身份證為15位或18位


匹配ip地址:\d+\.\d+\.\d+\.\d+

評注:提取ip地址時(shí)有用


匹配特定數(shù)字:

^[1-9]\d*$    //匹配正整數(shù)

^-[1-9]\d*$   //匹配負(fù)整數(shù)

^-?[1-9]\d*$   //匹配整數(shù)

^[1-9]\d*|0$  //匹配非負(fù)整數(shù)(正整數(shù) + 0)

^-[1-9]\d*|0$   //匹配非正整數(shù)(負(fù)整數(shù) + 0)

^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮點(diǎn)數(shù)

^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配負(fù)浮點(diǎn)數(shù)

^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮點(diǎn)數(shù)

^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非負(fù)浮點(diǎn)數(shù)(正浮點(diǎn)數(shù) + 0)

^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮點(diǎn)數(shù)(負(fù)浮點(diǎn)數(shù) + 0)

評注:處理大量數(shù)據(jù)時(shí)有用淤袜,具體應(yīng)用時(shí)注意修正


匹配特定字符串:

^[A-Za-z]+$  //匹配由26個(gè)英文字母組成的字符串

^[A-Z]+$  //匹配由26個(gè)英文字母的大寫組成的字符串

^[a-z]+$  //匹配由26個(gè)英文字母的小寫組成的字符串

^[A-Za-z0-9]+$  //匹配由數(shù)字和26個(gè)英文字母組成的字符串

^\w+$  //匹配由數(shù)字痒谴、26個(gè)英文字母或者下劃線組成的字符串

評注:最基本也是最常用的一些表達(dá)式


整理出來的一些常用的正則表達(dá)式所屬分類: JScript? (三)

Email : /^\w+([-+.]\w+)*@\w+([-.]\\w+)*\.\w+([-.]\w+)*$/

isEmail1 : /^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/;

isEmail2 : /^.*@[^_]*$/;

Phone : /^((\d3)|(\d{3}\-))?(0\d2,3|0\d{2,3}-)?[1-9]\d{6,7}$/

Mobile : /^((\d3)|(\d{3}\-))?13\d{9}$/

Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/

IdCard : /^\d{15}(\d{2}[A-Za-z0-9])?$/

Currency : /^\d+(\.\d+)?$/

Number : /^\d+$/

Code : /^[1-9]\d{5}$/

QQ : /^[1-9]\d{4,8}$/

Integer : /^[-\+]?\d+$/

Double : /^[-\+]?\d+(\.\d+)?$/

English : /^[A-Za-z]+$/

Chinese : /^[\u0391-\uFFE5]+$/

UnSafe : /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.

\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/

PassWord :^[\\w]{6,12}$

ZipCode : ^[\\d]{6}

/^(\+\d+ )?(\d+?)?[\d ]+$/; //這個(gè)是國際通用的電話號碼判斷

/^(1[0-2]\d|\d{1,2})$/; //這個(gè)是年齡的判斷

/^\d+\.\d{2}$/;? //這個(gè)是判斷輸入的是否為貨幣值



??? ip_ip = '(25[0-5]|2[0-4]\\d|1\\d\\d|\\d\\d|\\d)';

??? ip_ipdot = ip + '\\.';

??? isIPaddress = new RegExp('^'+ip_ipdot+ip_ipdot+ipdot+ip_ip+'$');

應(yīng)用:計(jì)算字符串的長度(一個(gè)雙字節(jié)字符長度計(jì)2,ASCII字符計(jì)1)

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

應(yīng)用:javascript中沒有像vbscript那樣的trim函數(shù)铡羡,我們就可以利用這個(gè)表達(dá)式來實(shí)現(xiàn)积蔚,如下:

String.prototype.trim = function()

{

??? return this.replace(/(^\s*)|(\s*$)/g, "");

}

匹配空行的正則表達(dá)式:\n[\s| ]*\r

匹配HTML標(biāo)記的正則表達(dá)式:/<(.*)>.*<\/\1>|<(.*) \/>/

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

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

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


^\d+$  //匹配非負(fù)整數(shù)(正整數(shù) + 0)

^[0-9]*[1-9][0-9]*$  //匹配正整數(shù)

^((-\d+)|(0+))$  //匹配非正整數(shù)(負(fù)整數(shù) + 0)

^-[0-9]*[1-9][0-9]*$  //匹配負(fù)整數(shù)

^-?\d+$    //匹配整數(shù)

^\d+(\.\d+)?$  //匹配非負(fù)浮點(diǎn)數(shù)(正浮點(diǎn)數(shù) + 0)

^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ //匹配正浮點(diǎn)數(shù)

^((-\d+(\.\d+)?)|(0+(\.0+)?))$  //匹配非正浮點(diǎn)數(shù)(負(fù)浮點(diǎn)數(shù) + 0)

^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ //匹配負(fù)浮點(diǎn)數(shù)

^(-?\d+)(\.\d+)?$

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市烦周,隨后出現(xiàn)的幾起案子尽爆,更是在濱河造成了極大的恐慌怎顾,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漱贱,死亡現(xiàn)場離奇詭異槐雾,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)幅狮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門募强,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人崇摄,你說我怎么就攤上這事擎值。” “怎么了逐抑?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵鸠儿,是天一觀的道長。 經(jīng)常有香客問我泵肄,道長捆交,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任腐巢,我火速辦了婚禮品追,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘冯丙。我一直安慰自己肉瓦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布胃惜。 她就那樣靜靜地躺著泞莉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪船殉。 梳的紋絲不亂的頭發(fā)上鲫趁,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機(jī)與錄音利虫,去河邊找鬼挨厚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛糠惫,可吹牛的內(nèi)容都是我干的疫剃。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼硼讽,長吁一口氣:“原來是場噩夢啊……” “哼巢价!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤壤躲,失蹤者是張志新(化名)和其女友劉穎城菊,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柒爵,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡役电,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了棉胀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡冀膝,死狀恐怖唁奢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情窝剖,我是刑警寧澤麻掸,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站赐纱,受9級特大地震影響脊奋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜疙描,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一诚隙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧起胰,春花似錦久又、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至畏妖,卻和暖如春脉执,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背戒劫。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工半夷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谱仪。 一個(gè)月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓玻熙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親疯攒。 傳聞我的和親對象是個(gè)殘疾皇子嗦随,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

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

  • 匹配中文:[\u4e00-\u9fa5] 英文字母:[a-zA-Z] 數(shù)字:[0-9] 匹配空格:[ ]匹配連續(xù)空...
    joker_fu閱讀 4,177評論 0 0
  • 常用正則表達(dá)式大全!(例如:匹配中文、匹配html)目錄導(dǎo)航一枚尼、常見正則表達(dá)式二贴浙、正則表達(dá)式應(yīng)用一、常見正則表達(dá)式...
    我不叫奇奇閱讀 228評論 0 2
  • 為什么要做這件事 做事情總得有些理由才能持久的執(zhí)行下去署恍,因?yàn)樽罱鼘W(xué)習(xí)html5語言崎溃,常規(guī)使用的很多信息需要表單來進(jìn)...
    TsingQue閱讀 2,123評論 0 8
  • 匹配中文字符的正則表達(dá)式: [u4e00-u9fa5] 評注:匹配中文還真是個(gè)頭疼的事,有了這個(gè)表達(dá)式就好辦了 ...
    星空下的諾言閱讀 1,635評論 0 4
  • 最近,在一篇文章里讀到這樣一句話呼巷,“我永遠(yuǎn)叫不醒一個(gè)裝睡的人囱修,同理,我也永遠(yuǎn)叫不醒一個(gè)能把破罐破摔美化成理所當(dāng)然的...
    夏目依舊閱讀 356評論 0 0