Что нового

Генерация почтового адреса

chernobeloe

Новичок
Сообщения
33
Репутация
0
Привет форумчане!
Помогите пожалуйста с генератором случайного почтового адреса
адрес почты в формате: [email protected],
где "account" состоит от 6 до 11 букв, буквы могут повторяться максимум 2 раза, но не идти вместе подряд,
потом после букв идет одно из символов: дефис "-", знак подчеркивания "_" или точка "." (тоже случайный выбор),
затем цифры - могут повторяться 2 раза не более и могут идти подряд, состоящие от 3 до 5 символов, a "@domain.com" случайно выбрать из заданных: gmail.com, mail.ru, yandex.ru или live.com - например: azbuka-3882 @gmail.com, gorod_312 @yandex.ru и т.д.
и полученный адрес показать в консоле
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Код:
$mail = ""
; буквы
$str = "abcdefghijklmnopqrstuvwxyz"
For $i = 1 To Random(6, 11, 1)
  $a = StringSplit($str, "")
  $l = $a[Random(1, $a[0], 1)]
  $mail &= $l
  $str = StringReplace($str, $l, "")
Next
; разделитель
$a = StringSplit("-_.", "")
$mail &= $a[Random(1, $a[0], 1)]
; цифры
$str = "1234567890"
For $i = 1 To Random(3, 5, 1)
  $a = StringSplit($str, "")
  $l = $a[Random(1, $a[0], 1)]
  $mail &= $l
  $str = StringReplace($str, $l, "")
Next
; @
$mail &= "@"
; домен
$a = StringSplit("gmail.com|mail.ru|yandex.ru|live.com", "|")
$mail &= $a[Random(1, $a[0], 1)]
; вывод
ConsoleWrite($mail & @CRLF)
 
Автор
C

chernobeloe

Новичок
Сообщения
33
Репутация
0
ох здорово! спасибо! :D
маленький нюанс: как сделать чередование гласных и согласных? но могут идти подряд максимум 2 гласных, а согласные по одному
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
chernobeloe
чередование гласных и согласных
Разбиваете строку с буквами на две - гласные и согласные - и поочерёдно из каждой выбираете букву.
 
Автор
C

chernobeloe

Новичок
Сообщения
33
Репутация
0
а как эти буквы рандомно выбрать поочередно без повторении?
вставить эти участки кода в функцию и вызывать по очереди?
Код:
; буквы
$str = "aeiouy"
For $i = 1 To Random(1, 1, 1)
  $a = StringSplit($str, "")
  $l = $a[Random(1, $a[0], 1)]
  $mail &= $l
  $str = StringReplace($str, $l, "")
Next
$str = "bcdfghjklmnpqrstvwxz"
For $i = 1 To Random(1, 1, 1)
  $a = StringSplit($str, "")
  $l = $a[Random(1, $a[0], 1)]
  $mail &= $l
  $str = StringReplace($str, $l, "")
Next
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
chernobeloe
вставить эти участки кода в функцию и вызывать по очереди?
Можно и в функцию. А можно и так
Код:
; буквы
Global $str[] = ["aeiouy","bcdfghjklmnpqrstvwxz"]
If Random(0, 1, 1) Then
  $str1 = $str[0]
  $str2 = $str[1]
Else
  $str1 = $str[1]
  $str2 = $str[0]
EndIf
$r = Random(6, 11, 1)
For $i = 1 To $r Step 2
  $a = StringSplit($str1, "")
  $l = $a[Random(1, $a[0], 1)]
  $mail &= $l
  If $i = $r Then ExitLoop
  $str1 = StringReplace($str1, $l, "")
  $a = StringSplit($str2, "")
  $l = $a[Random(1, $a[0], 1)]
  $mail &= $l
  $str2 = StringReplace($str2, $l, "")
Next
 
Верх