Почтовое регулярное выражение [дубликат]

На самом деле вы можете установить пользовательский текст для этой маленькой синей кнопки. В XML-файле просто используйте

android:imeActionLabel="whatever"

на вашем EditText.

Или в java-файле используйте

etEditText.setImeActionLabel("whatever", EditorInfo.IME_ACTION_DONE);

. Я произвольно выбрал IME_ACTION_DONE в качестве примера того, что должно идти во втором параметре для этой функции. Полный список этих действий можно найти здесь .

Следует отметить , что это не приведет к появлению текста на всех клавиатурах на всех устройствах. Некоторые клавиатуры не поддерживают текст на этой кнопке (например, swiftkey). И некоторые устройства тоже не поддерживают это. Хорошее правило: если вы уже видите текст на кнопке, это изменит его на то, что вы захотите.

10
задан Community 23 May 2017 в 12:02
поделиться

2 ответа

Вот функция, которую я использую. Она делает немного больше, чем просто пропускает адрес электронной почты через регулярное выражение, но пока это наиболее полное решение, которое я нашел:

function validEmail($email, $skipDNS = false)
{
   $isValid = true;
   $atIndex = strrpos($email, "@");
   if (is_bool($atIndex) && !$atIndex)
   {
      $isValid = false;
   }
   else
   {
      $domain = substr($email, $atIndex+1);
      $local = substr($email, 0, $atIndex);
      $localLen = strlen($local);
      $domainLen = strlen($domain);
      if ($localLen < 1 || $localLen > 64)
      {
         // local part length exceeded
         $isValid = false;
      }
      else if ($domainLen < 1 || $domainLen > 255)
      {
         // domain part length exceeded
         $isValid = false;
      }
      else if ($local[0] == '.' || $local[$localLen-1] == '.')
      {
         // local part starts or ends with '.'
         $isValid = false;
      }
      else if (preg_match('/\\.\\./', $local))
      {
         // local part has two consecutive dots
         $isValid = false;
      }
      else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain))
      {
         // character not valid in domain part
         $isValid = false;
      }
      else if (preg_match('/\\.\\./', $domain))
      {
         // domain part has two consecutive dots
         $isValid = false;
      }
      else if (!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\","",$local)))
      {
         // character not valid in local part unless 
         // local part is quoted
         if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\","",$local)))
         {
            $isValid = false;
         }
      }

      if(!$skipDNS)
      {
          if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A")))
          {
             // domain not found in DNS
             $isValid = false;
          }
      }
   }
   return $isValid;
}

Функция имеет необязательный аргумент $ skipDNS , который может быть установлен на TRUE, если вы не хотите проверять записи MX для хоста. В противном случае функция попытается проверить, действительно ли предоставленный адрес электронной почты соответствует реальному почтовому серверу.

Полезно отметить, что большинство методов проверки электронной почты RegEx будут проверять большинство адресов электронной почты, но они, скорее всего, позволят осторожно созданы неверные адреса или, что еще хуже ... не работают на более неясных, но действительных адресах электронной почты.

13
ответ дан 3 December 2019 в 16:30
поделиться
^([0-9a-zA-Z]([-\.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$

Это отличный инструмент, помогающий писать и проверять выражения, не уверен, есть ли оно у вас, но надеюсь, что это поможет.

Expresso

12
ответ дан 3 December 2019 в 16:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: