2011-10-28 48 views
0

我們正在開發具有自助服務的多租戶應用程序。用戶使用他們的電子郵件ID進行註冊。每個註冊都會根據其電子郵件ID分配給租戶。租戶是使用這個簡單的正則表達式根據電子郵件ID的網絡地址部分動態創建的。單個公司從多個電子郵件地址格式中識別

/.*@(.*)/ 

例如,[email protected]電子郵件簽約用戶,一個名爲amazon.com租戶被創建並分配給它 。當[email protected]註冊時,他/她將被添加到同一個租戶。租戶用戶可以看到對方並在他們之間共享文件/內容。

現在亞馬遜可能會在其印度辦事處爲員工發送@ amazon.co.in電子郵件。 他們可能有美國的前綴,即@ us.amazon.com美國員工等,

  1. 是否可行/可行的,編程,以確定一個單一的公司從多個電子郵件格式?如果是的話,你如何去做呢?正則表達式的例子等,

  2. 有沒有商業/免費服務/圖書館?

在當前的實現中,我們爲每個amazon.co.in和us.amazon.com和manually合併用戶/數據的請求時,一個單獨的租戶。

+0

,我不知道一個正則表達式,貝科坦率地說,我對他們很糟糕,但我可以想象你可以做一些愚蠢的事情,比如將其分成組成部分,然後與已知租戶的名單進行比較,即獲得「美國」「阿馬鬆」和「CO」,以及然後檢查你的租戶數據庫,或其他,並適當分配或任何你想做的事情。 *聳肩*哈克,但一個解決方案,直到更多的正則表達式傾向迴應。 –

回答

2

我不知道任何現有的庫能夠滿足您的需求,並且據我所知,使用正則表達式無法完全解決這個問題,但是您可以縮小一些範圍。

電子郵件規範指出格式爲user1 @ example的電子郵件是一種有效的格式,但實際上它在公開中相當罕見。如果你是導致錯誤(或創建一個新的租戶將需要手動合併)的情形外OK,你可以限制所有比賽到TLD:

/^.*@(.*)\.[^\.]+$/ 

這將覆蓋樣病例:

我不知道有多少的標籤有 「co.uk」 中的類型 「合作」 和「 co.in「,但如果它是一個特定的se噸,可以任選地用以下正則表達式(假設「CO」和「AB」正在除外)排除這些:

/^.*@(.+?)\.(co\.|ab\.)?[^\.]+$/ 

第一捕獲組隨後將提取物「例如」出了以下內容:

之後,你可能需要移動到一個綱領性的方法,以評估子域,如

但是你會很快遇到麻煩的東西,如:

它還得到,如果你認爲這是一個標籤可能會在幾個地方匹配漂亮毛茸茸:

+0

謝謝。另外,我發現不能保證example.com和example.org屬於單個公司。這使我們沒有可靠的方法來自動選擇單個租戶,以便通過多種電子郵件格式進行註冊。我正在尋找一些雲服務。 –

相關問題