2016-03-08 39 views
0

我不明白這一點。我希望有人能解釋。正則表達式 - 驗證電子郵件

我編寫了一個客戶網站的用戶註冊表。

我正在尋找一個正則表達式來驗證電子郵件ID。

我在其中一個網站上發現了這個。下面是表達式 -

/^\w+([.-]?\w+)@ \ w +([.-]?\ w +)(。\ w {2,3})+ $/

我不明白爲什麼作者在整個表達式中多次使用反斜槓()反斜槓(),即使分隔符是斜線(/)。

我的理解是,只有當我們想在表達式中使用分隔符時,我們才能用反斜槓進行轉義。

請幫助理解

+0

[不要這樣做,男人。放下正則表達式,然後走開。](https://davidcel.is/posts/stop-validating-email-addresses-with-regex/) – Walf

回答

0

的規則你提到的可能是基於你在寫關於語言逃逸分隔符(perl的?),因爲分隔符(/)字符是「特殊」,在語言的語境(或至少在使用該語言的正則表達式模式的情況下)。

但是,在正則表達式模式本身的上下文中有幾個字符是特殊的,其中一個字符是與任何字符匹配的句點(。)字符。所以,如果你想在正則表達式中匹配一個實際的句點,你必須爲正則表達式解析器而不是語言解析器使用反斜槓進行轉義。

例如,在你提供的模式,不接着用2個或3個字字符(\w = AZ,AZ,0在最後一個字符分組轉義((.\w{2,3})+$),正則表達式可以匹配任何字符(.)的期間-9或_)一次或多次(+ =前一組,字符集等中的一個或多個)。

因此,沒有最後一個字符分組模式匹配「.bc」,「.bcd」和「abcd」的反斜線。但是,如果該時間段帶有反斜槓(\.),則該時間段將變爲文字時間段,並且該模式不再與「abcd」匹配。

相關問題