android 郵件Regex

來源:互聯網
上載者:User

前一段時間解決了一個p0的問題,讓我對Regex的應用有點害怕,現在的Regex應用很廣泛,可是每種語言想對應的實現庫卻不是應用同一個標準,很多庫自身存在著bug,讓人很是擔心啊

下面舉一個例子。

項目中有兩塊需要做郵件validate, 有一塊是browser,別的team已經寫好了。

然後用戶端的哥們直接拿來簡單測試一下能work,直接就提交了。 結果造成了一個p0的bug,程式直接hang在郵件輸入的頁面了。

拿到問題後,我發現很奇怪啊,這個正則應該是正確的,為什麼在android app裡沒法正確執行呢,

這是那段在browser可以正常啟動並執行js中的Regex。仔細看看,其實是對的,只是效率有點低。

Pattern.compile(        "^([a-zA-Z0-9]+" +        "[_|\\-|\\.]?)*[a-zA-Z0-9]+" +        "@([a-zA-Z0-9]+" +        "[_|\\-|\\.]?)*[a-zA-Z0-9]+" +        "\\.[a-zA-Z]{2,3}$"    );

當輸入一定長度的字串後,程式匹配就無法退出。

後來發現這一段正則一開始就最大匹配字串,如果輸入一段字母,很難退出。

我改為如下,即可正常工作。

Pattern.compile("^[a-zA-Z0-9]+([\\_|\\-|\\.]?[a-zA-Z0-9])*\\@[a-zA-Z0-9]+([\\_|\\-|\\.]?[a-zA-Z0-9])*\\.[a-zA-Z]{2,3}$"

其實沒什麼改動,和上面的正則差不多,只是修改了匹配的順序,即可在android上正常運行。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.