Пожалуйста, определите мне этот короткий код Javascript! - PullRequest
3 голосов
/ 27 октября 2010

я новичок в Javascript ... я делаю форму в html и проверяю ее через JS ... недавно я нашел код для проверки электронной почты из веб-серфинга ... я понимаю основные цели функций, используемых вэтот код, но я не в состоянии понять логику хорошо ... пожалуйста, если кто-нибудь может заставить меня понять логику этого кода легко ... это становится беспокойным для меня много ... пожалуйста, пошагово объясните свой ответ...code is;

if (document.formname.fieldname.value.length >0) {
  i=document.formname.fieldname.value.indexOf("@")
  j=document.formname.fieldname.value.indexOf(".",i)
  k=document.formname.fieldname.value.indexOf(",")
  kk=document.formname.fieldname.value.indexOf(" ")
  jj=document.formname.fieldname.value.lastIndexOf(".")+1
  len=document.formname.fieldname.value.length

  if ((i>0) && (j>(1+1)) && (k==-1) && (kk==-1) && (len-jj >=2) && (len-jj<=3)) {
  }
  else {
   alert("Please enter an exact email address.\n" +
  document.formname.fieldname.value + " is invalid.");
  return false;
  }

 }

Я буду очень очень благодарен вам, люди ... с нетерпением жду ответа ... С уважением !!!

Ответы [ 3 ]

2 голосов
/ 27 октября 2010

Вот быстро переформатированная и прокомментированная версия - надеюсь, это поможет. Проверяет хорошо с JSLint.

function cleanEmail(email) {
    if (email.length > 0) {
        var atPos = email.indexOf("@"); // Position of the at character.
        var dotPos = email.indexOf(".", atPos); // First dot after the at sign
        var commaPos = email.indexOf(","); // Comma position. Used later to ensure that there is no commas in the string.
        var spacePos = email.indexOf(" "); // Space position. Used later to ensure that there is no spaces in the string.
        var lastDotPos = email.lastIndexOf(".") + 1; // Position _after_ last dot.
        var len = email.length;

        if (
            (atPos > 0) && // At must be at least the second character...
            (dotPos > 2) && // There must be at least one character between the at and the first dot after at
            (commaPos == -1) && // There must be no commas
            (spacePos == -1) && // Nor spaces
            (len - lastDotPos >= 2) && // There must be two characters after the last dot
            (len - lastDotPos <= 3) // But no more than three
        ) {
            // It's valid!
            return true;
        }
        else {
            alert("Please enter an exact email address.\n" + email + " is invalid.");
            return false;
        }
    }
}
1 голос
/ 27 октября 2010

Обратите внимание: это, вероятно, очень неудачный способ проверки строки электронной почты. Тем не менее, ниже приведено объяснение кода.

Код проверяет действительный идентификатор электронной почты. Сначала он анализирует emailString, чтобы найти индексы этих символов ('@','.',','), а затем проверяет несколько проверок.

i=document.formname.fieldname.value.indexOf("@") = Finding index of '@'
j=document.formname.fieldname.value.indexOf(".",i) = Finding index of '.'
k=document.formname.fieldname.value.indexOf(",") = Finding index of ','
kk=document.formname.fieldname.value.indexOf(" ") = Finding index of space
jj=document.formname.fieldname.value.lastIndexOf(".")+1 = finding the last index of '.'
len=document.formname.fieldname.value.length = getting length of string

((i>0) && (j>(i+1)) = Check @ is present in string and '.' is present after @
(k==-1) && (kk==-1) = characters ',' and space are not present in the string
(len-jj >=2) && (len-jj<=3) = There are some string present between @ and end of string and there are 3 characters after last '.' (probably checking like .com, .org etc
0 голосов
/ 27 октября 2010

document.formname.fieldname должно удовлетворять всем этим условиям:

'@' должно быть как минимум с индексом 1

Valid: a@ aaaa@

'.'должно быть как минимум с индексом 2 от @ sign

Valid: @b.ccc @aaaabbbb.ccc

без запятой или пробела

Invalid: a,b.ccc a.b c cc

последнее вхождение '.'должно сопровождаться 2-3 символами

Valid: a.bb c.d.eee
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...