Поскольку то, что следует за @
, должно быть символом слова, просто добавьте границу слова после @
с помощью \b
.Также обратите внимание, что .
не нужно экранировать в наборе символов, и вы можете использовать флаг i
(без учета регистра), чтобы не повторять [a-zA-Z]
:
$('#email').on('keyup', function(event) {
var email = event.target.value;
var pattern = /^([a-z]{3,})+@\b[\w.]+\.(?:com|org)$/i
if (!email) return false;
console.log(pattern.test(email));
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" name="email" id="email" value="" />
Если вы дополнительно хотите убедиться, что .
s на входе не находятся рядом друг с другом, то повторите (?:\w+\.)
вместонабор символов:
$('#email').on('keyup', function(event) {
var email = event.target.value;
var pattern = /^([a-z]{3,})+@(?:\w+\.)+(?:com|org)$/i
if (!email) return false;
console.log(pattern.test(email));
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" name="email" id="email" value="" />