在我之前的技術分享中偶爾會看到一些關於正規表示式的使用,不過對於沒有接觸過這一塊的人並不清楚正規表示式到底是什麼是怎麼寫的,那今天我就給大家講解一下正規表示式。
首先什麼是正規表示式,正規表示式又稱為規則表示式,在處理某些字串時通常被用來檢索和替換那些符合某個規則的文字。簡單來說就是用來匹配文字的乙個工具。比如說之前分享中看到的匹配乙個的路徑,匹配出目錄後替換掉目錄等。
正規表示式在學習mvc中也是很重要的一塊,主要在檔案的上傳和處理等時候會頻繁使用。它這麼重要看上去又麼複雜,那要怎麼寫呢?其實很簡單。
我們先來看乙個單詞「luckily」,這時候要匹配這個單詞用正規表示式就可以用\bluckily\b來匹配到這個單詞,當這個單詞和其它單詞混合在一起時也可以精準匹配到這個單詞,假如用這個正則來匹配你正在輸入這個單詞,只要你輸入有一點錯誤就不會匹配到,來做乙個演示:
如上圖是使用的是乙個專門用來測試正規表示式匹配的軟體,可以自行網上找。上面輸入了正規表示式,下面所要匹配的單詞在乙個句子裡,使用\b可以精確的匹配到這個單詞,然後我們演示一下當單詞在輸入的時候打漏了乙個字母發生的情況。
結果是完全匹配不到,如果說匹配內容換成乙個除單詞外的東西會怎樣呢?結果是什麼也匹配不到。\b代表著匹配單詞的開始和結束,但也不是所有單詞都能匹配到,比如說有些單詞是有空格等字元的,而\b並不會匹配到那些分隔符,因為在\b內輸入的匹配單詞中間不允許有空隔開,必須是乙個完整的單詞。
假如想匹配這個『every luckily』就可以這樣寫:\bevery\b.\bluckily\b,先匹配到第乙個單詞,再匹配中間部分的,最後匹配後面那個單詞,這樣乙個正規表示式就可以將這一整個匹配出來。
這個『.』是用來匹配除換行符意外的任意字元。只要不是回車,所有字元都可以匹配出來。而這個『』是乙個限定符號,它是限定前面所匹配的東西的次數,匹配零次或更多次。在這裡它中間匹配到的可能有也可能沒有。
根據上面的例子多少會有些了解了,但難免很多人可能不會英語(或者說忘記了英語),在匹配單詞的時候會有不適應,那麼我們來匹配一串數字。
這裡有三個隨機輸入的**號碼,當你只是單純的想匹配所有的數字那麼可以直接使用\d來匹配到所有的數字,因為是匹配所有數字,所有你就不用輸入任何東西便可以直接匹配到。
畢竟是**號碼,如果要準確地匹配這三種的話就可以這樣寫:
(?\d)?-?\d:這樣寫是可以準確地匹配到這三個**號碼,在這裡是沒錯的,但是它還有一定缺陷,它還可以匹配出「(213-74318503」這樣的一串字串,可它並不是一串**號碼,所以這個匹配的正規表示式是需要優化的。
(\d)\d|\d-?\d:這是優化後的正規表示式,它同樣可以匹配到這三個**號碼,同時它不會匹配出例如「(213-74318503」這樣的字串。
其中涉及到了比較多的字元,這裡的「\」便不再多講,在演示的過程中相信大家已經了解到了它的用意。它是乙個轉義字元,比如在正則的輸入框內輸入的一給個正規表示式所匹配的東西中含有「\」就需要進行轉義才能匹配到,不然會被當做轉義另乙個匹配字元。
問號也是乙個限定字元,它是重複零次或一次,要麼這裡沒有匹配的字元,要麼就只能出現一次。
大括號內所輸入的是匹配字元的長度,在匹配**號碼時,前面兩種的後面那串數字都只有8位數,用乙個\d便可以匹配到後面的一串數字,當然這串數字也是隨機的,只要時8位數的數字都行。
經過兩個例子的介紹,相信大家已經了解了不少,下面為大家介紹一下其它幾種常用的字元:
元字元之前介紹的「.」就是乙個元字元,還有\d和\b也是。
\w:它是匹配數字、字母、下劃線或者漢字。
\s:它匹配的是任意的空白符,不管是換行,還是空格,還有個tab,它們都可以被\s匹配出來。
在一長串字元中匹配你所需要的東西難免會有一些處理比較麻煩的,比如乙個src,在乙個混合的字串內很可能匹配兩個或以上不同的東西,但是你只想要乙個src的路徑,這時候就需要用到「^」和「$」,這兩個是專門用來匹配字串的開始和結束的(以什麼為開始,以什麼為結束)。
限定符之前也講過一些,還有其它幾種,
「+」它是重複重複一次或更多次,可以和「*」、「?」一起記。
還有幾種比較特殊的:是重複n次,就是之前的,重複多少次就輸入多少。重複n次或更多次,重複n到m次。
在元字元的匹配中還有反義的,就是大寫和小寫,比如\w是匹配不是換行符意外的任意字元。
正規表示式 1 正規表示式基礎
1.正規表示式基礎 正規表示式描述了一種字串匹配的模式,即可以使使用者通過一系列普通字元或特殊字元構建能夠明確描述文字字串的匹配模式,可以用來檢查某個字串是否含有某種子字串,將匹配的子字串做替換或者從某個字串中取出符合某個條件的子字串等。1.1 正規表示式的基本結構 乙個正規表示式就是由普通字元 如...
正規表示式基礎
限定符 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...
正規表示式基礎
元字元 描述 匹配任何單個字元。例如正規表示式r.t匹配這些字串 rat rut r t,但是不匹配root。匹配行結束符。例如正規表示式weasel 能夠匹配字串 he s a weasel 的末尾,但是不能匹配字串 they are a bunch of weasels.匹配一行的開始。例如正規...