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. Это говорит, что это совпадение. Если я не ошибаюсь, не означает ли {2,4} после [A-Z], что оно должно быть от 2 до 4 символов? Может ли быть проблема с ссорой, музеем и путешествиями? Я проверил, что это разрешено в моем приложении, и несколько тестеров регулярных выражений. Кроме того, я не уверен, правильно ли я сделал PCRE и POSIX. Я боюсь, что они оба могут быть PCRE, и я смешон. AFAIK, JavaScript - это POSIX, а Ruby - это PCRE. Так что, если я не понял это правильно, позвольте мне просто , это была долгая, долгая ночь изучения регулярных выражений, входя и выходя, и я пытаюсь выглядеть крутым. :)