因此,有一項任務是在某些特定條件下匹配輸入中的電子郵件。他們中的大多數都實作了。實際上,所有這些,除了一個。
因此,用戶電子郵件的長度不得超過 30 個字符,但僅限 gmail 用戶(@ 之前的部分)不能短于 6 個字符。其他型別的電子郵件可以有更短的電子郵件。
請幫我找到一個正確的正則運算式!
我現在的一個是:
^((?!.*?\.\.)[a-zA-Z0-9\.]{1,30})\@(([a-zA-Z0-9\-]) \.) ([a-zA-Z0-9]{2,4})$
uj5u.com熱心網友回復:
使用不區分大小寫的匹配,您可以將模式撰寫為:
^(?!.*?\.\.)(?:[a-zA-Z0-9.]{1,30}@(?!gmail\.com$)(?:[a-zA-Z0-9-] \.) [a-zA-Z0-9]{2,4}|[a-zA-Z0-9.]{6,30}@gmail\.com)$
模式匹配:
^字串的開始(?!.*?\.\.)斷言不..向右(?:2 個備選方案的非捕獲組[a-z0-9.]{1,30}匹配字符類中指定的 1-30 個字符@(?!gmail\.com$)匹配 @ 并斷言后面沒有 gmail.com(?:[a-z0-9-] \.) [a-z0-9]{2,4}匹配字符類的 1 個重復,.并匹配第二個字符類的 2-4 個字符|要么[a-zA-Z0-9.]{6,30}@gmail\.com
)關閉非捕獲組$字串結束
正則運算式演示
const regex = /^(?!.*?\.\.)(?:[a-zA-Z0-9.]{1,30}@(?!gmail\.com$)(?:[a-zA-Z0-9-] \.) [a-zA-Z0-9]{2,4}|[a-zA-Z0-9.]{6,30}@gmail\.com)$/i;
[
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"
].forEach(s => console.log(`${s} --> ${regex.test(s)}`));
寫它的更短的方法可能是在 gmail.com 之前斷言不是 1-5 個字符:
^(?!.*?\.\.)(?![a-z0-9.]{1,5}@(?=gmail\.com$))[a-z0-9.] @(?:[a-z0-9-] \.) [a-zA-Z0-9]{2,4}$
正則運算式演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/445147.html
標籤:javascript 正则表达式 验证
上一篇:字串中最后一點或逗號的正則運算式
下一篇:替換熊貓中的反引號
