正規表示式學習(一)

2021-06-27 12:43:20 字數 1348 閱讀 6163

今天開始學習正規表示式,理由是遇到了一些合法性輸入驗證的問題,利用一些if判斷的方式來做,有點麻煩,而且這也不是長久之計。在網上 查了很多資料,發現正規表示式是一種可以對輸入合法性進行檢驗的高效的工具。

摘自書中:

從較低的層面上說,正規表示式描述的是一串文字的特徵。可以用它來驗證使用者輸入的資料,或者也可以用它來檢索大量的文字。從較高的層面上來說,正規表示式容許使用者掌控他們自己的資料——控制這些資料。讓他們為自己服務。掌握正規表示式,就是掌握自己的資料。

程式很大程度上就是在對資料進行處理,而進入我們程式中的資料我們更應該進行合法性的控制,從資料的源頭上進行控制。程式可以簡單的這樣理解,對使用者的輸入進行按需求處理,並且返回處理後的資料給使用者。那麼,問題來了,程式中邏輯處理,效率都沒有問題,程式就可以正常執行了嗎?

答案是否定的,因為沒有對使用者的輸入進行約束和控制。所以學習正規表示式的意義很大。

摘自書中:

正規表示式(regular expression)是強大、便捷、高效的文字處理工具。

正規表示式和相關的工具能夠讓我們以可能未曾想過的方式來解決問題。

完整的正規表示式是由「元字元」和「文字」組成的。例如:^(from|subject):。這個正規表示式可以尋找以from:或者subject:開頭的行。其中 ^ ()  | 都屬於元字元,而from和subject屬於文字。

下面是學習後掌握的一些常見的「元字元」:

元字元名稱

匹配物件.點

單個任意字元

[..]

字元陣列

列出的任意字元

[^..]

排除性字元陣列

未列出的任意字元

^脫字元

行的起始位置

$美元符

行的結束位置

\<

反斜線-小於

單詞的起始位置

\>

反斜線-大於

單詞的結束位置|豎線

匹配分隔兩邊的任意乙個表示式

()括號

限制豎線的作用範圍,其他

下面是學習後掌握的一些表示重複的「元字元」:

元字元次數下限

次數上限含義?

無1最多一次*無

無任意次+1

無至少一次xy

x到y次

例項:編寫乙個能夠表示24小時的正規表示式。

(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]

經過思考後發現,這個不是最優的結果,還可以進行優化,優化後的結果([01]?[0-9]|2[0-3]):[0-5][0-9]

通過上邊的小例子可以看出正規表示式的確是強大的。最後引用書中的話結束文章:

一旦你掌握了正規表示式的強大功能,就會感到花在學習上的那些時間真是物超所值。

學習正規表示式(一)

十一大假,在家閒著無聊,想要模擬乙個jquery。最最棘手的問題 正規表示式。是個頭疼問題,所以我下定決心要搞定正則!首先,js中的正規表示式有乙個專門的類 var reg new regexp 這裡傳個正規表示式進去 有兩個驗證方法 reg.exec 需要驗證的字串 exec方法,如果所傳的字串匹...

正規表示式 學習一

正規表示式本質 記錄 匹配 文字 字元 規則的 工具 規則 b是正規表示式規定的乙個特殊 好吧,某些人叫它元字元,metacharacter 代表著單詞的開頭或結尾,也就是單詞的分界處。雖然通常英文的單詞是由空格,標點符號或者換行來分隔的,但是 b並不匹配這些單詞分隔字元中的任何乙個,它只匹配乙個位...

正規表示式學習

概念 正規表示式,就是用某種模式去匹配一類字串的乙個公式。基礎 下表列出了所有的元字元和對它們的乙個簡短的描述。簡單例子 vi 命令作用 s g 把乙個或者多個空格替換為乙個空格 s 去掉行尾的所有空格 s 在每一行頭上加入乙個空格 s 0 9 0 9 去掉行首的所有數字字元 s b aeio g ...