我正在嘗試更改電子郵件的正則運算式,要求我們不能在其中包含 10 位電話號碼或以 1 開頭的 11 位電話號碼。困難的部分是,如果 11 位電話號碼不以 1 開頭,有效,超過 11 位有效。我被正好 10 或 11 個連續數字掛斷了,它們也不會拒絕任何更長的數字。
這是我的情景,我想要的結果,以及我目前的結果。
- [email protected] -通過-通過
- [email protected] -失敗-失敗
- [email protected] -失敗-失敗
- [email protected] -通過-失敗
- [email protected] -通過-失敗
所以現在我的表達成功地拒絕了有 10 個連續數字的東西,它也拒絕了任何超過 10 位數字的東西,所以我的 11 位數字場景還沒有關系。
(?!^([0-9] *){10}).*^[_A-Za-z0-9-\ ] (\.[A-Za-z0-9-] )*@[_A-Za-z0-9-] (\.[A-Za-z0-9-] )*(\.[A-Za-z]{2,})$
有可能這對于正則運算式來說太聰明和特定了,我可以將它分解成更傳統的 java,但是我正在作業的領域會很難讓它具體發生,所以這是我的第一個有希望的解決方案。任何幫助將不勝感激。
uj5u.com熱心網友回復:
你可以使用這個正則運算式:
^(?!1?\d{10}@)[\w-] (?:\.[\w-] )*@[\w-] (?:\.[\w-] )*\.[A-Za-z]{2,}$
正則運算式演示
正則運算式詳細資訊:
^: 開始(?!1?\d{10}@)@:如果我們之前有 10 位數字或1后面有 10 位數字,則負前瞻斷言失敗@[\w-]: 匹配 1 個單詞或連字符(?:\.[\w-] )*: 匹配點后跟 1 個單詞/連字符字符。重復此組 0 次或多次@: 匹配一個@[\w-]: 匹配 1 個單詞或連字符(?:\.[\w-] )*: 匹配點后跟 1 個單詞/連字符字符。重復此組 0 次或多次\.[A-Za-z]{2,}: 匹配點后跟 2 個英文字母$: 結尾
uj5u.com熱心網友回復:
如果您的電子郵件地址在您的特定要求之外已經被認為是有效的,為什么不直接撤銷驗證呢?
- 只需檢查它是否以 10 位數字或 1 后跟 10 開頭,如果是,則拒絕它。
String[] data = { "[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]" };
String regex = "^(1?\\d{10}@.*)";
for (String str : data) {
System.out.println(str " -> "
(str.matches(regex) ? "fail" : "pass"));
}
印刷
howard.testman123@gmail.com -> pass
1234567890@gmail.com -> fail
18005567890@gmail.com -> fail
55555555555@gmail.com -> pass
321654575321@anything.org -> pass
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/479789.html
上一篇:計算矩陣中的帽子戲法勝利
下一篇:正則運算式匹配沒有字母的單詞
