正則在Java的開發中有着很重要的地位,包括JavaScript也都是支援正則的,正則實際上最早是PHP上的一種發展産物,在JDK 1.4之前如果要想使用正則,則需要單獨進行開發包的配置,在JDK 1.4之後,程式中增加了對正則的支援。 關于正則的使用視訊,詳見《跟我學Java26日通》第12天的課程,Java常用類庫 正規表達式文法 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
在典型的搜尋和替換操作中,必須提供要查找的确切文字。這種技術對于靜态文本中的簡單搜尋和替換任務可能足夠了,但是由于它缺乏靈活性,是以在搜尋動态文本時就有困難了,甚至是不可能的。 使用正規表達式,就可以:
例如,如果需要搜尋整個 web 站點來删除某些過時的材料并替換某些HTML 格式化标記,則可以使用正規表達式對每個檔案進行測試,看在該檔案中是否存在所要查找的材料或 HTML 格式化标記。用這個方法,就可以将受影響的檔案範圍縮小到包含要删除或更改的材料的那些檔案。然後可以使用正規表達式來删除過時的材料,最後,可以再次使用正規表達式來查找并替換那些需要替換的标記。 另一個說明正規表達式非常有用的示例是一種其字元串處理能力還不為人所知的語言。VBScript 是 Visual Basic 的一個子集,具有豐富的字元串處理功能。與 C 類似的 Jscript 則沒有這一能力。正規表達式給 JScript 的字元串處理能力帶來了明顯改善。不過,可能還是在 VBScript 中使用正規表達式的效率更高,它允許在單個表達式中執行多個字元串操作。 一個正規表達式就是由普通字元(例如字元 a 到 z)以及特殊字元(稱為元字元)組成的文字模式。該模式描述在查找文字主體時待比對的一個或多個字元串。正規表達式作為一個模闆,将某個字元模式與所搜尋的字元串進行比對。 這裡有一些可能會遇到的正規表達式示例:
常用正則: 1.驗證使用者名和密碼:( "^[a-zA-Z]\w{5,15}$ ")正确格式: "[A-Z][a-z]_[0-9] "組成,并且第一個字必須為字母6~16位; 2.驗證電話号碼:( "^(\d{3.4}-)\d{7,8}$ ")正确格式:xxx/xxxx-xxxxxxx/xxxxxxxx; 3.驗證×××号(15位或18位數字):( "^\d{15} ¦\d{18}$ "); 4.驗證Email位址:( "^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ "); 5.隻能輸入由數字和26個英文字母組成的字元串:( "^[A-Za-z0-9]+$ ") ; 6.整數或者小數:^[0-9]+\.{0,1}[0-9]{0,2}$ 7.隻能輸入數字: "^[0-9]*$ "。 8.隻能輸入n位的數字: "^\d{n}$ "。 9.隻能輸入至少n位的數字: "^\d{n,}$ "。 10.隻能輸入m~n位的數字:。 "^\d{m,n}$ " 11.隻能輸入零和非零開頭的數字: "^(0 ¦[1-9][0-9]*)$ "。 12.隻能輸入有兩位小數的正實數: "^[0-9]+(.[0-9]{2})?$ "。 13.隻能輸入有1~3位小數的正實數: "^[0-9]+(.[0-9]{1,3})?$ "。 14.隻能輸入非零的正整數: "^\+?[1-9][0-9]*$ "。 15.隻能輸入非零的負整數: "^\-[1-9][]0-9 "*$。 16.隻能輸入長度為3的字元: "^.{3}$ "。 17.隻能輸入由26個英文字母組成的字元串: "^[A-Za-z]+$ "。 18.隻能輸入由26個大寫英文字母組成的字元串: "^[A-Z]+$ "。 19.隻能輸入由26個小寫英文字母組成的字元串: "^[a-z]+$ "。 20.驗證是否含有^%& ',;=?$\ "等字元: "[^%& ',;=?$\x22]+ "。 21.隻能輸入漢字: "^[\u4e00-\u9fa5]{0,}$ " 22.驗證URL: "^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ "。 23.驗證一年的12個月: "^(0?[1-9] ¦1[0-2])$ "正确格式為: "01 "~ "09 "和 "1 "~ "12 "。 24.驗證一個月的31天: "^((0?[1-9]) ¦((1 ¦2)[0-9]) ¦30 ¦31)$ "正确格式為; "01 "~ "09 "和 "1 "~ "31 "。 25."^\d+$ " //非負整數(正整數 + 0) 26."^[0-9]*[1-9][0-9]*$ " //正整數 27."^((-\d+) ¦(0+))$ " //非正整數(負整數 + 0) 28."^-[0-9]*[1-9][0-9]*$ " //負整數 29."^-?\d+$ " //整數 30."^\d+(\.\d+)?$ " //非負浮點數(正浮點數 + 0) 31."^(([0-9]+\.[0-9]*[1-9][0-9]*) ¦([0-9]*[1-9][0-9]*\.[0-9]+) ¦([0-9]*[1-9][0-9]*))$ " //正浮點數 32."^((-\d+(\.\d+)?) ¦(0+(\.0+)?))$ " //非正浮點數(負浮點數 + 0) 33."^(-(([0-9]+\.[0-9]*[1-9][0-9]*) ¦([0-9]*[1-9][0-9]*\.[0-9]+) ¦([0-9]*[1-9][0-9]*)))$ " //負浮點數 34."^(-?\d+)(\.\d+)?$ " //浮點數 35."^[A-Za-z]+$ " //由26個英文字母組成的字元串 36."^[A-Z]+$ " //由26個英文字母的大寫組成的字元串 37."^[a-z]+$ " //由26個英文字母的小寫組成的字元串 38."^[A-Za-z0-9]+$ " //由數字和26個英文字母組成的字元串 39."^\w+$ " //由數字、26個英文字母或者下劃線組成的字元串 40."^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ " //email位址 41."^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$ " //url 42.提取資訊中的網絡連結: (h ¦H)(r ¦R)(e ¦E)(f ¦F) *= *( ' ¦ ")?(\w ¦\\ ¦\/ ¦\.)+( ' ¦ " ¦ * ¦ >)? 43.提取資訊中的郵件位址: \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 44.提取資訊中的圖檔連結: (s ¦S)(r ¦R)(c ¦C) *= *( ' ¦ ")?(\w ¦\\ ¦\/ ¦\.)+( ' ¦ " ¦ * ¦ >)? 45.提取資訊中的ip位址: (\d+)\.(\d+)\.(\d+)\.(\d+) 46.提取資訊中的中國手機号碼: (86)*0*13\d{9} 47.提取資訊中的中國固定電話号碼: (\(\d{3,4}\) ¦\d{3,4}- ¦\s)?\d{8} 48.提取資訊中的中國電話号碼(包括移動和固定電話): (\(\d{3,4}\) ¦\d{3,4}- ¦\s)?\d{7,14} 49.提取資訊中的中國郵政編碼: [1-9]{1}(\d+){5} 50.提取資訊中的中國×××号碼: \d{18} ¦\d{15} 51.提取資訊中的整數: \d+ 52.提取資訊中的浮點數(即小數):(-?\d*)\.?\d+ 53.提取資訊中的任何數字 : (-?\d*)(\.\d+)? 54.提取資訊中的中文字元串: [\u4e00-\u9fa5]* 55.提取資訊中的雙位元組字元串 (漢字):[^\x00-\xff]* 56.提取資訊中的英文字元串:\w* 57.提取任意HTML标記之間的内容:<script[\s\S]+</script *> 58.高強度日期驗證 ^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$ 59.高強度日期+時間驗證 ^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$ 從上面我們可以看到: "^ "表示後面緊跟着的字元為開頭;與之相對應的式 "$ "以緊跟前面的字元為結尾.但是要注意的式當 "^ "位于 "[] "裡時,表示 "非 "的意思,例如:[^AZ]表示不能為 "AZ "中的任一個字元. "[] "表示當中的一個字元. "{} "可以取得一個範圍,例如 "{9} "表示9個,而 "{1,9} "表示1到9個字元. |