[A-Z] {2,4}不限于2& 2之间。 4个字符

时间:2009-12-17 13:01:53

标签: javascript ruby regex posix pcre

PCRE: /\A[A-Z0-9_\.%\+\-]+@(?:[A-Z0-9\-]+\.)+(?:[a-z]{2,4}|museum|travel)\z/i 
POSIX: /^[A-Z0-9_\.%\+\-]+@(?:[A-Z0-9\-]+\.)+(?:[A-Z]{2,4}|museum|travel)$/i

这个正则表达式在各方面都是正确的,除了它允许发送电子邮件,如jim@f.com。它说这些是匹配的。如果我没弄错的话,[A-Z]之后的{2,4}是不是意味着它必须在2到4个字符之间?这可能是争吵,博物馆和旅行的问题吗?我已经确认在我的应用程序中允许这些,以及一些regex testers. 此外,我对我是否正确执行PCRE和POSIX很模糊。我担心他们可能都是PCRE而且我很荒谬。 AFAIK,JavaScript是POSIX,Ruby是PCRE。因此,如果我没有做到这一点,那就轻松地了解,这是一个漫长的长夜学习正则表达式,进出,我试图看起来很糟糕。 :)

3 个答案:

答案 0 :(得分:10)

确实如此,但它仅适用于顶级域名(示例中为“com”)。

答案 1 :(得分:0)

答案 2 :(得分:0)

POSIX不支持非捕获组(?:group),所以你的正则表达式都不是POSIX。 JavaScript不使用POSIX。 JavaScript正则表达式是Perl风格,但它没有所有功能。有关详细信息,请查看我网站上的regex flavor comparison