Как убедиться, что рядом с `@` должны быть только алфавиты, использующие регулярное выражение - PullRequest
0 голосов
/ 24 декабря 2018

Я делаю проверку регулярного выражения для электронной почты.работает нормально, но позволяет пользователю добавить @.xyz.com, но это значит меньше.как я могу гарантировать, что пользователь должен добавить только alphabet рядом с @ символом?

в шаблоне, который я добавил [\w\.], потому что добавление после @ равно @some.xx.comцель.(пользователь может ввести. после / внутри алфавита)

$(function(){
 
 $('#email').on('keyup', function(event){
   
   var email = event.target.value;
   var pattern = /^([a-zA-Z]{3,})+@[\w\.]+\.(com|org)$/
   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="" />

Кто-нибудь мне поможет?

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Вы ищете повторяющиеся комбинации \w+\. после @, т.е.

const tests = [
  'aaa@.xyz.com',
  'aaa@a.xyz.com',
  'aaa@a..xyz.com',
  'aaa@some.xx.com'
]

tests.forEach(test => {
  console.log(test, /^([a-z]{3,})+@(\w+\.)+(com|org)$/i.test(test));
});
0 голосов
/ 24 декабря 2018

Поскольку то, что следует за @, должно быть символом слова, просто добавьте границу слова после @ с помощью \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="" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...