2016-07-05 15 views
2

にすべての入力のために働いていない私はそれがtehのfollwoing入力正規表現は、C++

[email protected] 

JavaとJSで同じ作品を拒否C++

std::regex base_regex("[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\\.)+[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?"); 

で、次の正規表現を使用しています。誰かexpalinすることができます

+0

私のテストでは、このテストと単にマッチするだけで、regex_match関数は真を返します。 –

+0

どのコンパイラ/バージョンですか? – marcinj

+0

visual studio 2010 – vijin

答えて

0

私はあなたの正規表現をvs2010とvs2015で試しました。 vs2010では、2015年には試合が失敗します。だから私はvs2010実装のバグだと思います。あなたは少し異なる正規表現をしようとした場合 :

std::regex base_regex("[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[A-Za-z0-9]+\\.)+[A-Za-z0-9]+"); 

それが動作します。 私は表現を単純化しました。代わりに: - 先頭またはドメイン/サブドメイン名の末尾に、多分それはあなたの罰金でした「」

[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])? 

私はそれを受け入れるので、それは同じではありません

[A-Za-z0-9]+ 

を使用しました。