2017-03-28 28 views
0

以下Perl兼容的正則表達式(PCRE)電子郵件地址:ERE版本匹配的電子郵件地址

[^<>(){}\\[\\]\\\\.,;:\\[email protected]"]+(\\.[^<>(){}\[\]\\\\.,;:\\[email protected]"]+)*@([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,} 

的偉大工程具有的NodeJS(String.prototype.match)和git grep -P

我想從Perl兼容擴展(ERE)「降級」到grep -E。我的嘗試:

echo '[email protected]' | grep -E '[^<>(){}\\[\\]\\\\.,;:\\[email protected]"]+(\\.[^<>(){}\[\]\\\\.,;:\\[email protected]"]+)*@([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,}' 

無法匹配電子郵件地址。

有誰知道爲什麼?

回答

0

您可以使用

grep -E '[^][<>(){}\\.,;:@"[:space:]]+(\.[^][<>(){}\\.,;:@"[:space:]]+)*@([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}' 

online demo

]應在字符類開始時說,該[沒有一個括號表達式中逃脫,雙反斜線必須被替換爲單個。使用POSIX字符類更安全,如[:space:],而不是\s

相關問題