我有其中一個用戶進入一些電子郵件地址(強制性)和名(可選)文本區域。如何分割字符串以獲得電子郵件地址和名稱的數組(或散列),並考慮到它可能包含錯誤?到目前爲止,我可以把它分成數組,如果沒有名字被允許:拆分文本區域爲名字和電子郵件
emails = @request_feedback.emails.split("\r\n")
emails.each {|email|
if (email =~ /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i)
FeedbackMailer.get_feedback(current_user, email, employee_id).deliver
end
}
使用組您正則表達式如果允許用戶輸入數據以自由形式的方式,那麼確實沒有辦法可靠地捕獲電子郵件和名稱。正則表達式模式旨在查找文本中經常出現的模式,但它們可能沒有模式匹配的內容。沒有幾個文本樣本,我們無法幫助你,因爲我們可以想象完全不同的數據。 – 2013-03-05 14:52:15
錫文是正確的。如果可能的話,大量考慮將你的文本區域重構爲離散的組。 – verbsintransit 2013-03-05 18:27:19
我思考的內容分成地址和名稱的過程,它是一個後 - 行爲試圖將數據恢復到可用的格式的時候,相反,你需要修復您捕獲數據的方式。正如@verbsintransit所說,將您的文本區域重構爲離散的組。我會使用一個單獨的「輸入電子郵件:」文本輸入和一個「可選名稱:」文本輸入。用戶點擊「添加」按鈕,然後將數據聚合到JavaScript哈希中,並將它們添加到文本區域。用戶完成後,將散列作爲JSON字符串發送給您的代碼。問題解決了。 – 2013-03-05 18:52:50