Android 常用正則表達式

来源:http://www.cnblogs.com/zihang814/archive/2017/09/14/7518808.html
-Advertisement-
Play Games

移動的號段:134(0-8)、135、136、137、138、139、147(預計用於TD上網卡) * 、150、151、152、157(TD專用)、158、159、187(未啟用)、188(TD專用) 聯通的號段:130、131、132、155、156(世界風專用)、185(未啟用)、186(3g ...


java 正則表達式常用的字元說明 常用的正則表達式 java 正則表達式的使用 常用的工具類 RexUtils(匹配電話號碼,身份張,電子郵箱,IP地址等) java 正則表達式常用的字元說明 字元 說明 \ 將下一字元標記為特殊字元、文本、反向引用或八進位轉義符。例如,”n”匹配字元”n”。”\n”匹配換行符。序列”\\”匹配”\”,”\(“匹配”(“。 ^ 匹配輸入字元串開始的位置。如果設置了 RegExp 對象的 Multiline 屬性,^ 還會與”\n”或”\r”之後的位置匹配。 $ 匹配輸入字元串結尾的位置。如果設置了 RegExp 對象的 Multiline 屬性,$ 還會與”\n”或”\r”之前的位置匹配。 * 零次或多次匹配前面的字元或子表達式。例如,zo* 匹配”z”和”zoo”。* 等效於 {0,}。 + 一次或多次匹配前面的字元或子表達式。例如,”zo+”與”zo”和”zoo”匹配,但與”z”不匹配。+ 等效於 {1,}。 ? 零次或一次匹配前面的字元或子表達式。例如,”do(es)?”匹配”do”或”does”中的”do”。? 等效於 {0,1}。 {n} n 是非負整數。正好匹配 n 次。例如,”o{2}”與”Bob”中的”o”不匹配,但與”food”中的兩個”o”匹配。 {n,} n 是非負整數。至少匹配 n 次。例如,”o{2,}”不匹配”Bob”中的”o”,而匹配”foooood”中的所有 o。”o{1,}”等效於”o+”。”o{0,}”等效於”o*”。 {n,m} M 和 n 是非負整數,其中 n <= m。匹配至少 n 次,至多 m 次。例如,”o{1,3}”匹配”fooooood”中的頭三個 o。’o{0,1}’ 等效於 ‘o?’。註意:您不能將空格插入逗號和數字之間。 ? 當此字元緊隨任何其他限定符(*、+、?、{n}、{n,}、{n,m})之後時,匹配模式是”非貪心的”。”非貪心的”模式匹配搜索到的、儘可能短的字元串,而預設的”貪心的”模式匹配搜索到的、儘可能長的字元串。例如,在字元串”oooo”中,”o+?”只匹配單個”o”,而”o+”匹配所有”o”。 . 匹配除”\r\n”之外的任何單個字元。若要匹配包括”\r\n”在內的任意字元,請使用諸如”[\s\S]”之類的模式。 (pattern) 匹配 pattern 並捕獲該匹配的子表達式。可以使用 0…9 屬性從結果”匹配”集合中檢索捕獲的匹配。若要匹配括弧字元 ( ),請使用”(“或者”)”。 (?:pattern) 匹配 pattern 但不捕獲該匹配的子表達式,即它是一個非捕獲匹配,不存儲供以後使用的匹配。這對於用”or”字元 ( (?=pattern) 執行正向預測先行搜索的子表達式,該表達式匹配處於匹配 pattern 的字元串的起始點的字元串。它是一個非捕獲匹配,即不能捕獲供以後使用的匹配。例如,’Windows (?=95 (?!pattern) 執行反向預測先行搜索的子表達式,該表達式匹配不處於匹配 pattern 的字元串的起始點的搜索字元串。它是一個非捕獲匹配,即不能捕獲供以後使用的匹配。例如,’Windows (?!95 x y [xyz] 字元集。匹配包含的任一字元。例如,”[abc]”匹配”plain”中的”a”。 [^xyz] 反向字元集。匹配未包含的任何字元。例如,”[^abc]”匹配”plain”中”p”,”l”,”i”,”n”。 [a-z] 字元範圍。匹配指定範圍內的任何字元。例如,”[a-z]”匹配”a”到”z”範圍內的任何小寫字母。 [^a-z] 反向範圍字元。匹配不在指定的範圍內的任何字元。例如,”[^a-z]”匹配任何不在”a”到”z”範圍內的任何字元。 \b 匹配一個字邊界,即字與空格間的位置。例如,”er\b”匹配”never”中的”er”,但不匹配”verb”中的”er”。 \B 非字邊界匹配。”er\B”匹配”verb”中的”er”,但不匹配”never”中的”er”。 \cx 匹配 x 指示的控制字元。例如,\cM 匹配 Control-M 或回車符。x 的值必須在 A-Z 或 a-z 之間。如果不是這樣,則假定 c 就是”c”字元本身。 \d 數字字元匹配。等效於 [0-9]。 \D 非數字字元匹配。等效於 [^0-9]。 \f 換頁符匹配。等效於 \x0c 和 \cL。 \n 換行符匹配。等效於 \x0a 和 \cJ。 \r 匹配一個回車符。等效於 \x0d 和 \cM。 \s 匹配任何空白字元,包括空格、製表符、換頁符等。與 [ \f\n\r\t\v] 等效。 \S 匹配任何非空白字元。與 [^ \f\n\r\t\v] 等效。 \t 製表符匹配。與 \x09 和 \cI 等效。 \v 垂直製表符匹配。與 \x0b 和 \cK 等效。 \w 匹配任何字類字元,包括下劃線。與”[A-Za-z0-9_]”等效。 \W 與任何非單詞字元匹配。與”[^A-Za-z0-9_]”等效。 \xn 匹配 n,此處的 n 是一個十六進位轉義碼。十六進位轉義碼必須正好是兩位數長。例如,”\x41”匹配”A”。”\x041”與”\x04”&”1”等效。允許在正則表達式中使用 ASCII 代碼。 \num 匹配 num,此處的 num 是一個正整數。到捕獲匹配的反向引用。例如,”(.)\1”匹配兩個連續的相同字元。 \n 標識一個八進位轉義碼或反向引用。如果 \n 前面至少有 n 個捕獲子表達式,那麼 n 是反向引用。否則,如果 n 是八進位數 (0-7),那麼 n 是八進位轉義碼。 \nm 標識一個八進位轉義碼或反向引用。如果 \nm 前面至少有 nm 個捕獲子表達式,那麼 nm 是反向引用。如果 \nm 前面至少有 n 個捕獲,則 n 是反向引用,後面跟有字元 m。如果兩種前面的情況都不存在,則 \nm 匹配八進位值 nm,其中 n 和 m 是八進位數字 (0-7)。 \nml 當 n 是八進位數 (0-3),m 和 l 是八進位數 (0-7) 時,匹配八進位轉義碼 nml。 \un 匹配 n,其中 n 是以四位十六進位數表示的 Unicode 字元。例如,\u00A9 匹配版權符號 (©)。 以上內容來自 Java 正則表達式,該文章裡面寫得很細。 常用的正則表達式 以下內容來源於博客 最全的常用正則表達式大全——包括校驗數字、字元、一些特殊的需求等等 一、校驗數字的表達式 1 數字:^[0-9]*$ 2 n位的數字:^\d{n}$ 3 至少n位的數字:^\d{n,}$ 4 m-n位的數字:^\d{m,n}$ 5 零和非零開頭的數字:^(0|[1-9][0-9]*)$ 6 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7 帶1-2位小數的正數或負數:^(\-)?\d+(\.\d{1,2})?$ 8 正數、負數、和小數:^(\-|\+)?\d+(\.\d+)?$ 9 有兩位小數的正實數:^[0-9]+(.[0-9]{2})?$ 10 有1~3位小數的正實數:^[0-9]+(.[0-9]{1,3})?$ 11 非零的正整數:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$ 12 非零的負整數:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$ 13 非負整數:^\d+$ 或 ^[1-9]\d*|0$ 14 非正整數:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$ 15 非負浮點數:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ 16 非正浮點數:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ 17 正浮點數:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ 18 負浮點數:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ 19 浮點數:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ 二、校驗字元的表達式 1 漢字:^[\u4e00-\u9fa5]{0,}$ 2 英文和數字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$ 3 長度為3-20的所有字元:^.{3,20}$ 4 由26個英文字母組成的字元串:^[A-Za-z]+$ 5 由26個大寫英文字母組成的字元串:^[A-Z]+$ 6 由26個小寫英文字母組成的字元串:^[a-z]+$ 7 由數字和26個英文字母組成的字元串:^[A-Za-z0-9]+$ 8 由數字、26個英文字母或者下劃線組成的字元串:^\w+$ 或 ^\w{3,20}$ 9 中文、英文、數字包括下劃線:^[\u4E00-\u9FA5A-Za-z0-9_]+$ 10 中文、英文、數字但不包括下劃線等符號:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$ 11 可以輸入含有^%&',;=?$\"等字元:[^%&',;=?$\x22]+ 12 禁止輸入含有~的字元:[^~\x22]+ 三、特殊需求表達式 1 Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ 2 功能變數名稱:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.? 3 InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ 4 手機號碼:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$ 5 電話號碼("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$ 6 國內電話號碼(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7} 7 身份證號(15位、18位數字):^\d{15}|\d{18}$ 8 短身份證號碼(數字、字母x結尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$ 9 帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 10 密碼(以字母開頭,長度在6~18之間,只能包含字母、數字和下劃線):^[a-zA-Z]\w{5,17}$ 11 強密碼(必須包含大小寫字母和數字的組合,不能使用特殊字元,長度在8-10之間):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$ 12 日期格式:^\d{4}-\d{1,2}-\d{1,2} 13 一年的12個月(01~09和1~12):^(0?[1-9]|1[0-2])$ 14 一個月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$ 15 錢的輸入格式: 16 1.有四種錢的表示形式我們可以接受:"10000.00" 和 "10,000.00", 和沒有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$ 17 2.這表示任意一個不以0開頭的數字,但是,這也意味著一個字元"0"不通過,所以我們採用下麵的形式:^(0|[1-9][0-9]*)$ 18 3.一個0或者一個不以0開頭的數字.我們還可以允許開頭有一個負號:^(0|-?[1-9][0-9]*)$ 19 4.這表示一個0或者一個可能為負的開頭不為0的數字.讓用戶以0開頭好了.把負號的也去掉,因為錢總不能是負的吧.下麵我們要加的是說明可能的小數部分:^[0-9]+(.[0-9]+)?$ 20 5.必須說明的是,小數點後面至少應該有1位數,所以"10."是不通過的,但是 "10" 和 "10.2" 是通過的:^[0-9]+(.[0-9]{2})?$ 21 6.這樣我們規定小數點後面必須有兩位,如果你認為太苛刻了,可以這樣:^[0-9]+(.[0-9]{1,2})?$ 22 7.這樣就允許用戶只寫一位小數.下麵我們該考慮數字中的逗號了,我們可以這樣:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$ 23 8.1到3個數字,後面跟著任意個 逗號+3個數字,逗號成為可選,而不是必須:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$ 24 備註:這就是最終結果了,別忘了"+"可以用"*"替代如果你覺得空字元串也可以接受的話(奇怪,為什麼?)最後,別忘了在用函數時去掉去掉那個反斜杠,一般的錯誤都在這裡 25 xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$ 26 中文字元的正則表達式:[\u4e00-\u9fa5] 27 雙位元組字元:[^\x00-\xff] (包括漢字在內,可以用來計算字元串的長度(一個雙位元組字元長度計2,ASCII字元計1)) 28 空白行的正則表達式:\n\s*\r (可以用來刪除空白行) 29 HTML標記的正則表達式:<(\S*?)[^>]*>.*?|<.*? /> (網上流傳的版本太糟糕,上面這個也僅僅能部分,對於複雜的嵌套標記依舊無能為力) 30 首尾空白字元的正則表達式:^\s*|\s*$或(^\s*)|(\s*$) (可以用來刪除行首行尾的空白字元(包括空格、製表符、換頁符等等),非常有用的表達式) 31 騰訊QQ號:[1-9][0-9]{4,} (騰訊QQ號從10000開始) 32 中國郵政編碼:[1-9]\d{5}(?!\d) (中國郵政編碼為6位數字) 33 IP地址:\d+\.\d+\.\d+\.\d+ (提取IP地址時有用) 34 IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)) (由@飛龍三少 提供,感謝共用) java 正則表達式的使用 java.util.regex 包主要包括以下三個類: - Pattern 類: pattern 對象是一個正則表達式的編譯表示。Pattern 類沒有公共構造方法。要創建一個 Pattern 對象,你必須首先調用其公共靜態編譯方法,它返回一個 Pattern 對象。該方法接受一個正則表達式作為它的第一個參數。 Matcher 類: Matcher 對象是對輸入字元串進行解釋和匹配操作的引擎。與Pattern 類一樣,Matcher 也沒有公共構造方法。你需要調用 Pattern 對象的 matcher 方法來獲得一個 Matcher 對象。 PatternSyntaxException: PatternSyntaxException 是一個非強制異常類,它表示一個正則表達式模式中的語法錯誤。 以下實例中使用了正則表達式 .runoob. 用於查找字元串中是否包了 runoob 子串: 實例 import java.util.regex.*; class RegexExample1{ public static void main(String args[]){ String content = "I am noob " + "from runoob.com."; String pattern = ".*runoob.*"; boolean isMatch = Pattern.matches(pattern, content); System.out.println("字元串中是否包含了 'runoob' 子字元串? " + isMatch); } } 實例輸出結果為: 字元串中是否包含了 'runoob' 子字元串? true 1 RexUtils checkIdCard(String idCard) 驗證身份證號碼 checkMobile(String mobile) 驗證手機號碼(支持國際格式,+86135xxxx…(中國內地),+00852137xxxx…(中國香港)) boolean checkPhone(String phone) checkEmail 檢驗是否是電子郵箱。格式是數字,字母,下劃線,但不含有 -。 checkDigit 驗證是否是整數 checkDecimals 驗證整數和浮點數 checkBlankSpace 檢驗是否是空白字元 checkChinese 檢驗是否是中文 checkBirthday 驗證日期(日期,格式:1992-09-03,或1992.09.03) 驗證 URL 地址 格式:http://blog.csdn.net/gdutxiaoxu/article/details/71732642或 http://www.csdn.net:80 checkIpAddress 匹配 IP 地址 phoneNoHide 手機號碼,中間4位星號替換 cardIdHide 銀行卡號,保留最後4位,其他星號替換 RexUtisl 工具類源碼 /** * 正則工具類-http://blog.csdn.net/xyang81/article/details/7706408 * 提供驗證郵箱、手機號、電話號碼、身份證號碼、數字等方法 */ public final class RegexUtil { /** * 手機號碼,中間4位星號替換 * * @param phone 手機號 * @return 星號替換的手機號 */ public static String phoneNoHide(String phone) { // 括弧表示組,被替換的部分$n表示第n組的內容 // 正則表達式中,替換字元串,括弧的意思是分組,在replace()方法中, // 參數二中可以使用$n(n為數字)來依次引用模式串中用括弧定義的字串。 // "(\d{3})\d{4}(\d{4})", "$1****$2"的這個意思就是用括弧, // 分為(前3個數字)中間4個數字(最後4個數字)替換為(第一組數值,保持不變$1)(中間為*)(第二組數值,保持不變$2) return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"); } /** * 銀行卡號,保留最後4位,其他星號替換 * * @param cardId 卡號 * @return 星號替換的銀行卡號 */ public static String cardIdHide(String cardId) { return cardId.replaceAll("\\d{15}(\\d{3})", "**** **** **** **** $1"); } /** * 身份證號,中間10位星號替換 * * @param id 身份證號 * @return 星號替換的身份證號 */ public static String idHide(String id) { return id.replaceAll("(\\d{4})\\d{10}(\\d{4})", "$1** **** ****$2"); } /** * 是否為車牌號(滬A88888) * * @param vehicleNo 車牌號 * @return 是否為車牌號 */ public static boolean checkVehicleNo(String vehicleNo) { Pattern pattern = Pattern.compile("^[\u4e00-\u9fa5]{1}[a-zA-Z]{1}[a-zA-Z_0-9]{5}$"); return pattern.matcher(vehicleNo).find(); } /** * 驗證身份證號碼 * * @param idCard 居民身份證號碼15位或18位,最後一位可能是數字或字母 * @return 驗證成功返回true,驗證失敗返回false */ public static boolean checkIdCard(String idCard) { String regex = "[1-9]\\d{13,16}[a-zA-Z0-9]{1}"; return Pattern.matches(regex, idCard); } /** * 驗證手機號碼(支持國際格式,+86135xxxx...(中國內地),+00852137xxxx...(中國香港)) * * @param mobile 移動、聯通、電信運營商的號碼段 *

移動的號段:134(0-8)、135、136、137、138、139、147(預計用於TD上網卡) * 、150、151、152、157(TD專用)、158、159、187(未啟用)、188(TD專用)

*

聯通的號段:130、131、132、155、156(世界風專用)、185(未啟用)、186(3g)

*

電信的號段:133、153、180(未啟用)、189

* @return 驗證成功返回true,驗證失敗返回false */ public static boolean checkMobile(String mobile) { String regex = "(\\+\\d+)?1[3458]\\d{9}$"; return Pattern.matches(regex, mobile); } /** * 驗證固定電話號碼 * * @param phone 電話號碼,格式:國家(地區)電話代碼 + 區號(城市代碼) + 電話號碼,如:+8602085588447 *

國家(地區) 代碼 :標識電話號碼的國家(地區)的標準國家(地區)代碼。它包含從 0 到 9 的一位或多位數字, * 數字之後是空格分隔的國家(地區)代碼。

*

區號(城市代碼):這可能包含一個或多個從 0 到 9 的數字,地區或城市代碼放在圓括弧—— * 對不使用地區或城市代碼的國家(地區),則省略該組件。

*

電話號碼:這包含從 0 到 9 的一個或多個數字

* @return 驗證成功返回true,驗證失敗返回false */ public static boolean checkPhone(String phone) { String regex = "(\\+\\d+)?(\\d{3,4}\\-?)?\\d{7,8}$"; return Pattern.matches(regex, phone); } /** * 驗證Email * * @param email email地址,格式:[email protected][email protected],xxx代表郵件服務商 * @return 驗證成功返回true,驗證失敗返回false */ public static boolean checkEmail(String email) { String regex = "\\w+@\\w+\\.[a-z]+(\\.[a-z]+)?"; return Pattern.matches(regex, email); } /** * 驗證整數(正整數和負整數) * * @param digit 一位或多位0-9之間的整數 * @return 驗證成功返回true,驗證失敗返回false */ public static boolean checkDigit(String digit) { String regex = "\\-?[1-9]\\d+"; return Pattern.matches(regex, digit); } /** * 驗證整數和浮點數(正負整數和正負浮點數) * * @param decimals 一位或多位0-9之間的浮點數,如:1.23,233.30 * @return 驗證成功返回true,驗證失敗返回false */ public static boolean checkDecimals(String decimals) { String regex = "\\-?[1-9]\\d+(\\.\\d+)?"; return Pattern.matches(regex, decimals); } /** * 驗證空白字元 * * @param blankSpace 空白字元,包括:空格、\t、\n、\r、\f、\x0B * @return 驗證成功返回true,驗證失敗返回false */ public static boolean checkBlankSpace(String blankSpace) { String regex = "\\s+"; return Pattern.matches(regex, blankSpace); } /** * 驗證中文 * * @param chinese 中文字元 * @return 驗證成功返回true,驗證失敗返回false */ public static boolean checkChinese(String chinese) { String regex = "^[\u4E00-\u9FA5]+$"; return Pattern.matches(regex, chinese); } /** * 驗證日期(年月日) * * @param birthday 日期,格式:1992-09-03,或1992.09.03 * @return 驗證成功返回true,驗證失敗返回false */ public static boolean checkBirthday(String birthday) { String regex = "[1-9]{4}([-./])\\d{1,2}\\1\\d{1,2}"; return Pattern.matches(regex, birthday); } /** * 驗證URL地址 * * @param url 格式:http://blog.csdn.net/gdutxiaoxu/article/details/71732642或 http://www.csdn.net:80 * @return 驗證成功返回true,驗證失敗返回false */ public static boolean checkURL(String url) { String regex = "(https?://(w{3}\\.)?)?\\w+\\.\\w+(\\.[a-zA-Z]+)*(:\\d{1,5})?(/\\w*)*(\\??(.+=.*)?(&.+=.*)?)?"; return Pattern.matches(regex, url); } /** * 匹配中國郵政編碼 * * @param postcode 郵政編碼 * @return 驗證成功返回true,驗證失敗返回false */ public static boolean checkPostcode(String postcode) { String regex = "[1-9]\\d{5}"; return Pattern.matches(regex, postcode); } /** * 匹配IP地址(簡單匹配,格式,如:192.168.1.1,127.0.0.1,沒有匹配IP段的大小) * * @param ipAddress IPv4標準地址 * @return 驗證成功返回true,驗證失敗返回false */ public static boolean checkIpAddress(String ipAddress) { String regex = "[1-9](\\d{1,2})?\\.(0|([1-9](\\d{1,2})?))\\.(0|([1-9](\\d{1,2})?))\\.(0|([1-9](\\d{1,2})?))"; return Pattern.matches(regex, ipAddress); } }
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Vue2.0搭建Vue腳手架(vue-cli) 在網上找了很多的搭建腳手架教程,但都不求甚解。終於找到2個比較好的教程,讀者可對比閱讀1和2,在這裡分享給大家,希望對初學者有所幫助。ps:高手請繞道。 說明:此文章參考了網上一些前人的技術分享,自己拿過來總結一下。此文章是基於webpack構建的vu ...
  • 學習過java基礎,最近趁著大量課餘時間想學習Android開發。百度很多資料Android studio,由Google開發的開發工具,那就不需要再多說。對於初學者的我來說,一定足夠用了。此文主要介紹自己下載、安裝、第一次使用遇到的問題。 開發環境 物理機:Windows8.1專業版 Androi ...
  • 目錄 1、CALayer(父類) 2、CAShapeLayer(形狀/畫布) 3、CAGradientLayer(漸變層) 順序為 接觸/學習 順序 1、CALayer(父類) 1-1)、幾個常用屬性 2、CAShapeLayer 2-1)、使用參照 《iOS:繪圖》 -> “1、UIBezierP ...
  • 前言:畢業之後在高薪的後廠村互聯網公司和生活工作平衡的體制內之間糾結了好久,最後選擇了後者,畢竟後廠村只要有技術什麼時候都能去,體制內基本上除了應屆生這次機會基本上就再也進不去了,社招就算進去也沒有編製。基於“面對兩難選擇時,選擇沒有體驗過的那個”的原則,選擇了體制,然後有幸被分配到了移動端開發的部 ...
  • 最近在優化項目雖說小優化一直在持續,大版本的優化也進行了兩個版本了但是bug列表依舊血淋淋的擺在那裡。有的看一眼也能找到問題所在但是有的就是想破頭也不知道問題在哪裡,畢竟整個項目經過了N個人的手代碼風格迥異閱讀起來也會有不小的困難,因此在這分享一下解決這些個bug之間遇到的問題和一些看似實用的方法。 ...
  • UIScrollView,UICollectionView 和UITableView 三者之間的關係:UIScrollView是 UICollectionView 和 UITableView 的父類. UIScrollView 一個可以滾動的視圖控制項,可以用來查看比屏幕大很多的視圖內容. 常用屬性: ...
  • OC開發中一般都會使用model來處理數據,經常會碰到定義好的欄位因為各種原因 後臺突然改欄位或者空值 造成model中對應的數值為nil,這個時候 我們如果取這個值加入數組中使用就會發現數組中的參數個數少了,造成閃退。因為在OC中數組無需要預先申請空間 數組每增加或刪除一個元素,就增加或刪除一個節 ...
  • 首先手機連接電腦,打開 ITunes. 左上角點擊文件,再點擊添加到資料庫。 找到你要安裝的ipa點擊選擇打開 好了ipa已經添加進去後,你會看你你剛纔添加進去的應用在列表內,點擊左上角一個手機的圖標。 點擊安裝,右下角同步 便成功安裝到手機上了。 此隨筆乃本人學習工作記錄,如有疑問歡迎在下麵評論, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...