天天看點

js常用正規表達式

整數或者小數:^[0-9]+.{0,1}[0-9]{0,2}$

隻能輸入數字:"^[0-9]*$"。

隻能輸入n位的數字:"^d{n}$"。

隻能輸入至少n位的數字:"^d{n,}$"。

隻能輸入m~n位的數字:。"^d{m,n}$"

隻能輸入零和非零開頭的數字:"^(0|1-9*)$"

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

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

隻能輸入非零的正整數:"^+?1-9*$"

隻能輸入非零的負整數:"^-[1-9][]0-9"*$

隻能輸入長度為3的字元:"^.{3}$"

隻能輸入由26個英文字母組成的字元串:"^[a-za-z]+$"

隻能輸入由26個大寫英文字母組成的字元串:"^[a-z]+$"

隻能輸入由26個小寫英文字母組成的字元串:"^[a-z]+$"

隻能輸入由數字和26個英文字母組成的字元串:"^[a-za-z0-9]+$"

隻能輸入由數字、26個英文字母或者下劃線組成的字元串:"^w+$"

驗證使用者密碼:"^[a-za-z]w{5,17}$"正确格式為:以字母開頭,長度在6~18之間,隻能包含字元、數字和下劃線

隻能輸入漢字:"^[u4e00-u9fa5]{0,}$"

驗證email位址:"^w+([-+.]w+)@w+([-.]w+).w+([-.]w+)*$"

驗證電話号碼:"^((d{3,4}-)|d{3.4}-)?d{7,8}$"正确格式為:"xxx-xxxxxxx"、"xxxx-xxxxxxxx"、"xxx-xxxxxxx"、"xxx-xxxxxxxx"、"xxxxxxx"和"xxxxxxxx"

驗證身份證号(15位或18位數字):"^d{15}|d{18}$"

驗證一年的12個月:"^(0?[1-9]|1[0-2])$"正确格式為:"01"~"09"和"1"~"12"

驗證一個月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式為;"01"~"09"和"1"~"31"

比對中文字元的正規表達式: [u4e00-u9fa5]

應用:計算字元串的長度(一個雙位元組字元長度計2,ascii字元計1)

比對空行的正規表達式:n[s| ]*r

比對html标簽的正規表達式:<(.)>(.)(.)>|<(.)/>

比對首尾空格的正規表達式:(^s)|(s$)

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

利用正規表達式分解和轉換ip位址:

下面是利用正規表達式比對ip位址,并将ip位址轉換成對應數值的javascript程式:

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

比對email位址的正規表達式:w+([-+.]w+)@w+([-.]w+).w+([-.]w+)*

利用正規表達式限制網頁表單裡的文本框輸入内容:

用正規表達式限制隻能輸入中文:

用正規表達式限制隻能輸入全角字元:

用正規表達式限制隻能輸入數字:

用正規表達式限制隻能輸入數字和英文:

評注:可以用來計算字元串的長度(一個雙位元組字元長度計2,ascii字元計1)

比對空白行的正規表達式:ns*r

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

評注:網上流傳的版本太糟糕,上面這個也僅僅能比對部分,對于複雜的嵌套标記依舊無能為力

比對首尾空白字元的正規表達式:^s|s$

評注:可以用來删除行首行尾的空白字元(包括空格、制表符、換頁符等等),非常有用的表達式

評注:表單驗證時很實用

評注:網上流傳的版本功能很有限,上面這個基本可以滿足需求

比對帳号是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線):^a-za-z{4,15}$

比對國内電話号碼:d{3}-d{8}|d{4}-d{7}

評注:比對形式如 0511-4405222 或 021-87888822

比對騰訊qq号:1-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個英文字母或者下劃線組成的字元串

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

整理出來的一些常用的正規表達式所屬分類

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

isemail1 : /^w+([.-]w+)@w+([.-]w+).w+$/;

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

mobile : /^(((d{3}))|(d{3}-))?13d{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 ]+$/; //這個是國際通用的電話号碼判斷

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

/^d+.d{2}$/; //這個是判斷輸入的是否為貨币值

ip位址有效性驗證函數

比對html标記的正規表達式:/<(.)>.1>|<(.*) />/

^d+$  //比對非負整數(正整數 + 0)

^[0-9]1-9$  //比對正整數

^((-d+)|(0+))$  //比對非正整數(負整數 + 0)

^-[0-9]1-9$  //比對負整數

^-?d+$    //比對整數

^d+(.d+)?$  //比對非負浮點數(正浮點數 + 0)

^(([0-9]+.[0-9]1-9)|([0-9]1-9.[0-9]+)|([0-9]1-9))$ //比對正浮點數

^((-d+(.d+)?)|(0+(.0+)?))$  //比對非正浮點數(負浮點數 + 0)

^(-(([0-9]+.[0-9]1-9)|([0-9]1-9.[0-9]+)|([0-9]1-9)))$ //比對負浮點數

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

繼續閱讀