在PHP中的Regex應驗

來源:互聯網
上載者:User
在PHP中的Regex驗證

驗證是處處為站長的共同關注。如果有人進入形式的資訊,您需要驗證它!但是,這樣做最簡單的方法是什嗎?

嗯,處理大量的文字模式,需要遵循時,我總是轉向Regex。Regex是你定義一個模式的一種方式。 雖然我不會教你的Regex,我會告訴Regex在PHP。PHP主要使用了Perl的regex的味道。這就是為什麼要執行的功能在PHPRegexpreg_match。執行Perl的Regex匹配,怎麼做呢?無論如何,有某些修飾符,可以添加到PHP中的格局,影響它如何執行。 例如,“我”,使得它不區分大小寫。我不得不這樣做,電子郵件地址模式,因為它縮短假設您使用區分大小寫Regex模式的可讀性。然後,有“米”修飾符將治療一個多行的主題,實際上多個內襯。否則將被忽略,分行符號(N)和錨點(^和$)將假定你的意思是整個主題的開頭和結尾。“S”是有用的,如果你經常使用Regex的模式,不以^開始並沒有一致的起始字元。 為了確定,如果該使用者名稱,密碼和驗證密碼是正確的,我以為只有字母數字字元是允許的。因此,尋找一切可能是一個潛在的錯誤的字元,而不是我是不是字母的字元搜尋。這是由在字元類的字元^ [:^ A-ZA-Z0-9]。然後,後來,如果有一個比賽,我知道有一個在外地的無效字元。 同時請記住,有元字元,需要在Regex轉義。我這個建議preg_quote 電子郵件和URL值是比較困難的,特別是因為這些標準是很難界定的。例如,在常規expressions.info,相當冗長的辯論已經到電子郵件的regex。從技術上來說,一個有效電子郵件地址可以包含單引號。對於大多數的電子郵件地址,列出將是有效。URL包含了類似的問題。眾多的頂級網域名稱,和一個列表是很難聚集。人也有一種傾向,只是說“software8.co”代替“http://software8.co”。也有情況下頂級網域名稱中包含一個國家的價值,以及,像“google.co.uk”, 我不建議嘗試,包括儘可能多的,你可以。如果您嘗試,以滿足大家,你最終驗證上花費這麼多時間,它已不再是可行的。驗證使用者輸入,在你的代碼是什麼權宜之計,而不是根據是什麼,他們將進入。 此外,regex是不是每一個問題的解決(雖然它是為大多數)。如果您要驗證的東西,有許多例外或極其複雜,它成為一件苦差事。我什至不能想象試圖日期和時間格式。中午12時或午夜嗎?是12:60有效嗎?約17:00怎麼樣?你需要上午和下午要輸入嗎?3意味著同為3:00?這些東西都是最好留給人類或其他一些方法,你可以制定。

 $unit) {        switch ($idx) {                case 4:$rgx = "/^((ftp|http|https)://(w+:{0,1}w*@)?)?(S+)(:[0-9]+)?(/|/([w#!:.?+=&%@!-/]))?$/";                break;                case 3:                        $rgx = "/^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}$/i";                break;                case 2:                        //read below                        $rgx = "/[^A-Za-z0-9]+/";                break;                case 1:                        //read below                        $rgx = "/[^A-Za-z0-9]+/";                break;                case 0:                        //if characters are NOT normal                        $rgx = "/[^A-Za-z0-9]+/";                break;                default:                        echo "???";                        die("$unit ?");                break;        }        $n = preg_match($rgx, $unit, $matches);        if ( ($idx == 0) || ($idx == 1) || ($idx == 2) ){            if ($n) {                        echo "Bad Characters in $unit; Alphanumeric only
"; } } else { if ($n == 0) { echo "Incorrect Format in $unit; Enter Valid Info
"; } }}?>
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.