本文簡單介紹正則表達式使用說明,並給出經常使用正則表達式語句。javascript
*、+和?限定符都是貪婪的,由於它們會盡量多的匹配文字,只有在它們的後面加上一個?就能夠實現非貪婪或最小匹配。html
參考:http://www.runoob.com/regexp/regexp-syntax.htmljava
經常使用的正則表達式以下:正則表達式
驗證數字:^[0-9]*$ 驗證n位的數字:^\d{n}$ 驗證至少n位數字:^\d{n,}$ 驗證m-n位的數字:^\d{m,n}$ 驗證零和非零開頭的數字:^(0|[1-9][0-9]*)$ 驗證有兩位小數的正實數:^[0-9]+(.[0-9]{2})?$ 驗證有1-3位小數的正實數:^[0-9]+(.[0-9]{1,3})?$ 驗證非零的正整數:^\+?[1-9][0-9]*$ 驗證非零的負整數:^\-[1-9][0-9]*$ 驗證非負整數(正整數 + 0) ^\d+$ 驗證非正整數(負整數 + 0) ^((-\d+)|(0+))$ 驗證長度爲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之間,只能包含字符、數字和下劃線。 驗證是否含有 ^%&',;=?$\" 等字符:[^%&',;=?$\x22]+ 驗證漢字:^[\u4e00-\u9fa5],{0,}$ 驗證Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ 驗證InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$ 驗證電話號碼:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正確格式爲:XXXX-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)$ 正確格式爲:0一、09和一、31。 整數:^-?\d+$ 非負浮點數(正浮點數 + 0):^\d+(\.\d+)?$ 正浮點數 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ 非正浮點數(負浮點數 + 0) ^((-\d+(\.\d+)?)|(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+)?$ 0 0 0 "^\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]*
正則表達式用於字符串處理、表單驗證等場合,實用高效。現將一些經常使用的表達式收集於此,以備不時之需。 網絡
匹配中文字符的正則表達式: [\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個英文字母或者下劃線組成的字符串
電話號碼正則表達式(支持手機號碼,3-4位區號,7-8位直播號碼,1-4位分機號)
((\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位分機號 如:1234567890一、1234-12345678-1234