以圖明志

開源項目與工具

[專題] 什么是正則表達式?

正則表達式入門專題開始
正則表達式看上去并不像某種語言或者某個技術那么重要,僅靠它們你無法寫出一個應用程序來。然而,它們卻總是在你的開發過程中如影隨形,不管是進行表單驗證,還是高亮顯示搜索結果,又或者是進行 URL 地址映射,總是需要使用它們。幾乎所有的語言都對它進行了不同程度的支持,由此,足見其在文本匹配這一領域中的地位。

開源項目與工具

[專題] 正則入門:匹配固定的單個字符

單個字符就是個正則表達式
所有的單個大小寫字母、數字,以及后面將要講述的特殊字符,都是一個正則表達式,它們只能匹配單個字符,且這個字符與它本身相同,例如,對于表達式“i”:welcome to visit www.824886.live。下面的小程序,將會把字符串 welcome to visit www.824886.live 中的小寫字母 i 匹配出來,并替換成大寫字母 I,并且背景顏色變成橙色。

開源項目與工具

[專題] 正則入門:匹配任意的單個字符

“.”可以匹配任意的單個字符
“.”可以匹配任意的單個字符、英文字母、數字,以及它本身。我們現在結合前面介紹的全字匹配來學習它??梢钥吹?,對于表達式“www.824886.live”來說,前面“nowamagic”部分是一個全字匹配,只能固定的匹配“nowamagic”字符串;后面的“.”部分,可以匹配任意單個字符(包含字符“.”本身)。

開源項目與工具

[專題] 正則入門:字符組的使用

“[dt]”含義是:“匹配 d 或者 t”
“.”過于靈活了,它可以匹配幾乎所有的單個字符。有的時候,我們只希望匹配有限個字符中的某一個。這個時候,可以使用字符組。假設有這樣一種情況,我們希望驗證某個單詞是不是拼寫正確,比如說 “head” 是一個單詞,“heat”也是一個單詞,但“heay”就不是一個單詞,所以,“hea”后面要么出現“d”,要么“t”。

開源項目與工具

[專題] 正則入門:在字符組中使用字符區間

比如匹配阿拉伯數字的寫法是[0-9]
現在假設我們需要匹配一組文件名,它們的名稱為 city0.jpg、city1.jpg...city9.jpg。根據前面介紹的內容,我們很容易寫出這樣的表達式:“city[0123456789].jpg”。沒錯!這樣寫法的確可以達到我們要的效果。如果說寫 10 個阿拉伯數字你覺得并不困難,那么如果要匹配這樣的文件名呢?a_1.jpg、b_1.jpg、c_1.jpg...z_1.jpg。

開源項目與工具

[專題] 正則入門:反義字符組的使用

匹配“除了某些字符以外”的其他字符
有的時候,我們需要匹配“除了某些字符以外”的其他字符,這時候,我們可以使用反義字符組,其語法是:“[^字符集合]”,比如我們把包含nowamagic的字符串替換掉。這里并沒有匹配“nowamagic.net”。因為,不管是 普通字符組 還是 反義字符組,它總是 確定一定以及肯定 要匹配一個字符的。

開源項目與工具

[專題] 正則入門:匹配空字符

換行、回車與Tab
我想先介紹一下回車換行的由來。通常,當我們在鍵盤上敲擊一下回車鍵時,不管光標此時在哪里,總是會新起一行,然后將光標位于新行的首位置。這在計算機上看起來一氣呵成,用一個符號來表示就 OK 了,可在正則表達式中,以及很多語言中(比如 VBScript),卻被表示成了兩個動作,一個叫“回車”(Carriage Return),一個叫“換行”(Line Feed)。

開源項目與工具

JavaScript字符串正則的一些函數

exec和test方法
先來一個例子,有這樣的網址 http://www.824886.live:80/librarys/veda/,現在要把它正則拆分成數組。也可以用RegExp.$1、RegExp.$2、RegExp.$3、RegExp.$4取值。下面的程序檢查輸入手機號碼是否正確,如果通過驗證返回true,否則返回false。

開源項目與工具

[專題] 正則入門:匹配一個或多個字符

匹配郵件地址的正則
應該了解,上面所介紹的不管簡單也好,復雜也好,都只是匹配單個字符,如果需要匹配一個很長的字符串,而組成這個字符串的每個字符都比較復雜(沒有諸如\d 這樣的簡寫方式),那么,可以想象,一個表達式會多么復雜。正則表達式中,可以在 單個字符(比如“j”)、字符組(比如“[abcde]”)、特定字符類型(比如“\d”)、單個任意字符(即“.”) 后面加“+”。

開源項目與工具

[專題] 正則入門:匹配零個或多個字符

“*”表示匹配零個或多個字符
我們知道,不管是使用“nowamagic[0-3]\.net”還是“nowamagic[^0-3]\.net”,“nowamagic”與“.net”之間總是要出現一個字符的,而有的時候,我們允許它們之間可以不出現字符,比如說:現在我要求可以匹配“nowamagic.net”,那么,該如何完成呢?正則表達式中,可以在后面加“*”,來表示匹配零個或多個字符組成的字符串。

開源項目與工具

[專題] 正則入門:匹配零個或一個字符串

問號?匹配符
現在加入我們要對單詞的正確性進行匹配,對于“flower”這個單詞來說,不管是單數“flower”還是復數“flowers”,都是正確的寫法,而對于“flowersss”則是不正確的。使用前面的知識,無法完成這樣的匹配。正則表達式中,使用“?”來匹配零個或一個字符。其使用方式與“+”和“*”相同。

開源項目與工具

[專題] 正則入門:匹配固定數目的字符

后面加“{數字}”
盡管“?”、“+”、“*”這三個元字符的出現解決了很多問題,但是,它們并不完善:1.沒有辦法指定最多匹配多少個字符,比如說,我們要匹配手機號碼,那么應該是 11 個數字,而“+”和“*”會匹配盡可能多的數字,不管是 17 個還是 18 個都認為是正確的。2.沒有辦法指定最少匹配多少個字符,“+”、“*”、“?”,所能提供的最少字符,要么零個,要么一個。

開源項目與工具

[專題] 正則入門:匹配區間內數目的字符

{最小數目,最大數目}
我們再次考慮 000-999 的匹配:“\d{3}”,盡管它沒有錯,但它只能匹配精確地匹配 3 位:000、001、002 … 100、101 … 999。而通常,我們需要對于 0、10、99 這樣的數也能夠匹配,這時,就需要指定可以匹配 1 到 3 位的數字。正則表達式中,使用“{最小數目,最大數目}”的語法來實現。

開源項目與工具

[專題] 正則入門:貪婪匹配

匹配盡可能多的字符
它會匹配盡可能多的字符。它首先看整個字符串,如果不匹配,對字符串進行收縮;遇到可能匹配的文本,停止收縮,對文本進行擴展,當發現匹配的文本時,它不著急將該匹配保存到匹配集合中,而是對文本繼續擴展,直到無法繼續匹配 或者 擴展完整個字符串,然后將前面最后一個符合匹配的文本(也是最長的)保存起來到匹配集合中。所以說它是貪婪的。

開源項目與工具

[專題] 正則入門:惰性匹配

.*?
惰性匹配(lazy)它會匹配盡可能少的字符,它從第一個字符開始找起,一旦符合條件,立刻保存到匹配集合中,然后繼續進行查找。所以說它是懶惰的。我們回顧一下上面 “\d{1,3}” 匹配數字的例子,對于“1234”,當我們使用“\d{1,3}”時,進行的是貪婪匹配,它首先找到“123”(因為“1234”不符合),之后的“4”也符合,所以,找到的匹配是“123”和“4”。

開源項目與工具

[專題] 正則入門:兩個匹配模式

一個?號與兩個?號
現在請回顧一下上面貪婪、惰性匹配語法的表,有兩個匹配模式比較有意思:一個是“{n}”,對于這種形式的匹配,由于它精確地要求匹配 n 個字符,所以無所謂貪婪還是惰性,盡管“{n}?”也是正確的匹配寫法,但它的匹配結果總是與“{n}”相同。
1 / 2 首頁 < Prev 1 2 Next > 尾頁 頁碼:
云南快乐十分走势一定牛 什么叫上证指数和深证成指 今晚p62开奖结果 赌场里面有哪些玩法 福建11选五5开奖 支付宝定期理财保本吗 理财技巧 36策略配资 股票涨跌幅计算公式软件 陕西快乐10分软件 君安在线配资平台