簡體   English   中英

修復電子郵件的正則表達式不允許連續的時間段

[英]Fix Regular Expression for Emails to Not allow Consecutive Periods

我的常規表達非常糟糕所以我認為會尋求一些幫助。

我有一個正則表達式:

/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;

它適用於我的電子郵件驗證的大多數情況,但它允許這一個通過:

test..testing @ gmail.com

如何將上述正則表達式更改為不允許整個字符串中的連續句點?

謝謝。

要避免匹配兩個連續的點,您可以在正則表達式的開頭添加負向前瞻:

/^(?!.*\.{2})[a-z0-9etc...
 ------------

如果字符串中有兩個連續的句點,並且不需要對原始正則表達式進行任何其他修改,則它將無法匹配。

然而,這似乎是一個壞主意,因為你的正則表達式首先是不正確的。 如果您堅持使用正則表達式來驗證電子郵件地址,請嘗試以下操作:

別。 該電子郵件地址在實踐中起作用 (盡管根據相關RFC 技術上無效 )。

熱門提示:不要使用正則表達式“驗證”電子郵件地址,否則會出錯。

不要試圖發明輪子;)

例如,請看這里:

http://www.regular-expressions.info/email.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM