使用 re 驗證電子郵件地址

任務

文字處理 / 正規表示式 / 驗證電子郵件地址

使用的 Opam 套件

  • re 使用版本測試:1.11.0 — 使用的函式庫:re

程式碼

用於測試的範例資料陣列。

let emails =
  [| "oscar.0camel@ocaml.org"
   ; "notAnEmail@jkorg"
   ; "PrivacyFirst@proton.me"
   ; "tommy_trojan@usc.edu"
   ; "emailScammer@evil.lol"
  |]

使用來自 re 套件的 Re 模組,我們建立一個 Perl 風格的正規表示式並進行 compile 編譯。

let validate_email_re =
  Re.Perl.re "[a-zA-Z0-9.$_!]+@[a-zA-Z0-9]+\\.[a-z]{2,3}"
  |> Re.compile

使用 Re.execp 函式,我們檢查給定的 regex 是否與該 email 匹配。

let validate_email regex email =
  if Re.execp regex email
  then Printf.printf "%s has a valid email format\n" email
  else Printf.printf "%s has an invalid email format\n" email

讓我們透過將 (validate_email validate_email_re) 回傳的函式映射到 emails 陣列來測試它。

let () =
  print_endline "Email Verification Results:";
  emails
  |> Array.map (validate_email validate_email_re)

現在,我們檢查電子郵件中的特定頂級網域。請注意模式結尾的 | 運算符(正規表示式 OR)

let validate_email_domain_re =
  Re.Perl.re "[a-zA-Z0-9.$_!]+@[a-zA-Z0-9]+\\.[com|org|edu|io|gov|me]"
  |> Re.compile 

讓我們透過將 (validate_email validate_email_domain_re) 回傳的函式映射到 emails 陣列來測試它。

let () =
  print_endline "Email Verification Results:";
  emails
  |> Array.map (validate_email validate_email_domain_re)

食譜無法運作嗎?註解不夠清楚或過時嗎?

開啟問題為此食譜貢獻