如何在 ReactJS 中驗證郵箱?
郵箱驗證是身份驗證表單中需要新增的重要功能。如今,大多數應用程式都使用郵箱和一次性密碼進行身份驗證。如果使用者輸入錯誤的郵箱,則他們將無法進行身份驗證。
此外,我們還需要在透過聯絡表單獲取使用者郵箱時驗證郵箱。使用者可能會因某些錯誤而輸入錯誤的郵箱格式。因此,為了糾正使用者的錯誤,我們可以透過顯示您已輸入錯誤郵箱的錯誤訊息來提醒他們。
下面,我們將學習兩種使用不同方法來驗證使用者郵箱地址的方法。
使用 validator npm 包
NPM 包是 ReactJS 中的庫模組。我們可以將其安裝到我們的專案中並透過匯入來使用它。
在這裡,我們需要安裝 validator npm 包。使用者可以將以下命令輸入終端,以在專案目錄中安裝 validator npm 包。
npm i validator
validator 模組包含各種驗證郵箱、電話號碼等的方法。因此,我們可以使用 validator npm 包的 isEmail() 方法來驗證郵箱,該方法根據郵箱是否有效返回布林值。
語法
使用者可以按照以下語法使用 validator npm 包來驗證 ReactJS 中的郵箱。
if (validator.isEmail(new_Email)) { // email is valid } else { // email is not valid }
在上面的語法中,我們使用了 validator 的 isEmail() 方法。此外,我們還將 new_Email 作為 isEmail() 方法的引數傳遞以進行驗證。
示例
在下面的示例中,我們建立了使用者輸入以從使用者處獲取郵箱。每當輸入欄位發生更改時,它都會呼叫 handleEmail() 函式。
在 handleEmail() 函式中,我們使用“event.target.value”獲取新的輸入,並使用 setEmail() 來更改郵箱變數的值。此外,我們還使用了 validator 的 isEmail() 方法來驗證我們從使用者那裡獲得的郵箱。
import React, { useState } from "react"; import validator from "validator"; const App = () => { const [email, setEmail] = useState("bac@gmail.com"); const [message, setMessage] = useState(" "); function handleEmail(event) { let new_Email = event.target.value; setEmail(new_Email); if (!validator.isEmail(new_Email)) { setMessage("Please, enter a valid email!"); } else { setMessage(""); } } return ( <div> <h2> {" "} Validate the email <i> using validator npm package </i> </h2> <div style = {{ color: "red" }}> {message} </div> <input type = "email" value = {email} onChange = {handleEmail} /> <div> The email entered is {email} </div> </div> ); }; export default App;
輸出
使用正則表示式在 ReactJS 中驗證郵箱
正則表示式是類似字串的字元模式。我們需要遵循正則表示式的某些規則來建立它。
我們可以建立一個正則表示式來驗證郵箱,然後使用 test() 方法檢查郵箱是否與郵箱模式匹配。
語法
使用者可以按照以下語法使用正則表示式來驗證 ReactJS 中的郵箱地址。
let emailRegex = /[a-z0-9]+@[a-z]+\.[a-z]{2,3}/; if (!emailRegex.test(inputValue)) { // invalid email } else { // valid email }
在上面的語法中,我們將正則表示式模式作為 test() 方法的參考,並將郵箱作為 test() 方法的引數傳遞以進行驗證。
正則表示式解釋
/ / - 表示正則表示式的開始和結束。
[a-z0-9]+ - 表示至少一個 a 到 z 和 0 到 9 之間的字元。
@ - 表示郵箱應始終包含 @ 字元。
[a-z]+ – 郵箱在“@”之後應始終包含至少一個字元。
\. – 驗證域名之後郵箱中的點。
[a-z]{2,3} – 表示郵箱最後在點之後應包含兩個或三個字元。
示例
在下面的示例中,emailRegex 變數包含搜尋模式。每當使用者輸入郵箱輸入時,它都會使用 test() 方法驗證輸入值。如果 test() 方法發現輸入不匹配,則它將使用 setMessage() 設定錯誤訊息。
使用者可以輸入錯誤的郵箱格式並觀察輸出中的錯誤。
import React, { useState } from "react"; const App = () => { const [email, setEmail] = useState("yourmail@mail.com"); const [message, setMessage] = useState(" "); function handleEmail(event) { let inputValue = event.target.value; setEmail(inputValue); let emailRegex = /[a-z0-9]+@[a-z]+\.[a-z]{2,3}/; if (!emailRegex.test(inputValue)) { setMessage("Error! you have entered invalid email."); } else { setMessage(""); } } return ( <div> <h2> {" "} Validate the email <i> using the regular expression </i> </h2> <div style = {{ color: "red" }}> {message} </div> <input type = "email" value = {email} onChange = {handleEmail} /> <div> Your email is {email} </div> </div> ); }; export default App;
輸出
在本教程中,使用者學習瞭如何在 ReactJS 中驗證郵箱。我們使用 validator NPM 包和正則表示式來驗證使用者的郵箱地址。使用 NPM 包和正則表示式來驗證郵箱地址各有其優勢。
當您使用正則表示式時,您可以自行自定義它進行驗證,而 Validator npm 包提供了一種標準的驗證方式,因為許多開發人員都對其進行了測試。