2011-08-23 20 views
0

我只是想出了電子郵件地址,以下正則表達式:如何使正則表達式更易於維護?

\w+[[.\-]\w+]*@\w+[[.\-]\w+]* 

5分鐘後,我已經遇到問題搞清楚什麼上述正則表達式表示。有什麼方法可以使正則表達式更易於維護嗎?

+3

相關(您的電子郵件正則表達式):?什麼是驗證電子郵件地址最好的正則表達式(HTTP:/ /stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses) – Vache

+0

並加入Vache:「有些人在遇到問題時,會想」我知道,我會用正則表達式。「現在他們有兩個問題。」 - 傑米Zawinski – 2011-08-23 12:12:09

+4

你的表達將拒絕許多有效的電子郵件地址。請[不要在這裏推出自己的](http://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses)。如果你這樣做,至少請把你的努力放在相關的RFC上,而不是從你自己有限的電子郵件地址的經驗中推斷出來。 –

回答

4

一種選擇是要打破你的表達成片,並把每一塊適當命名的變量。然後,通過加入這些變量來建立你的表情。

有些語言支持表達式中的空格和註釋被賦值的模式,所以您可以在每行上用註釋將表達式分散在多行上。下面是一個語法看起來如何在python:

# match a float: 
a = re.compile(r"""\d + # the integral part 
        \. # the decimal point 
        \d * # some fractional digits""", re.X) 

(從python documentation所採取的示例)

-1

我不確定有沒有,但是您可以使用網上找到的許多免費軟件來測試您的reg表達式與示例字符串。這裏是我最喜歡的:http://weitz.de/regex-coach/

下載它,然後你可以輸入你的REG exp和測試字符串來了解它做什麼

1

您可以添加註釋這樣(?# some comment text)可能的幫助。一般來說,正則表達式會更容易閱讀你使用它的越多。我會回答問題標題不,他們不是邪惡的(我愛他們),你只需要小心和練習。

+0

至於爲什麼你必須小心[鏈接](http://en.wikipedia.org/wiki/ReDoS) – smitec