Шаблон проверки электронной почты HTML5 не проверяет .edu.au, принимает даже только edu.a - PullRequest
0 голосов
/ 01 мая 2019

Я должен принимать только usyd.edu.au адреса электронной почты. Проверка работает, но она также работает с usyd.edu.a электронными письмами. Я хочу, чтобы он принимал только когда введен полный .au. У меня есть шаблон, который работает до сих пор:

input type="email", placeholder="Email" name="txtName" id="txtEmail" pattern="[a-z0-9._%+-]+@[usyd]+\.[edu]+\.[au]"/>

Ответы [ 2 ]

1 голос
/ 01 мая 2019

Близко, но не верно.

[a-z0-9._%+-]+@[usyd]+\.[edu]+\.[au]

  • [a-z0-9._%+-]+ достаточно просто Разрешить a-z или 0-9 или. или _ или% или + или -
  • @ разрешено только @
  • [usyd]+ разрешить один или несколько из u, s, y или d. Который может быть просто «ты»
  • \. только разрешить.

Но предложение Остина также неверно:

[a-z0-9._%+-]+@(usyd)+\.(edu)+\.(au)

  • (usyd)+ позволит вам ввести 'usydusydusyd'
  • (edu)+ позволит вам ввести 'edueduedueduedu'

Нет смысла в скобках. и вам определенно не нужен '+', поскольку он позволяет один или более .

Вместо этого вы хотите это:

^[a-z0-9._%+-]+@usyd\.edu\.au$

Это позволит убедиться, что в начале строки не существует ничего странного («^») и что строка заканчивается на '@usyd.edu.au' («$»)

input:invalid {
  background: red;
}
<input type="email", placeholder="Email" name="txtName" id="txtEmail" pattern="[a-z0-9._%+-]+@usyd\.edu\.au"/>
0 голосов
/ 01 мая 2019

Ты почти понял!Если вы замените квадратные скобки [] в последних 3 местах вашего регулярного выражения на круглые скобки (), то все будет работать как положено.например: [a-z0-9._%+-]+@(usyd)+\.(edu)+\.(au)

И вот почему:

  • [au] будет соответствовать ОДНОМУ символу, найденному в скобках.(Либо a, либо u)
  • (au) будет соответствовать ВСЕМУ, найденному в скобках.(Точно au)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...