Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема извлечения подстрок регулярным выражением (https://javascript.ru/forum/misc/9304-problema-izvlecheniya-podstrok-regulyarnym-vyrazheniem.html)

Dotod 09.05.2010 21:31

Проблема извлечения подстрок регулярным выражением
 
Снова здравствуйте.

Есть список емайл-адресов в textarea:

info@topay.ru
autoflot@tomsk.ru
leshka-b@mail.ru.
AmiroPR@.ru
nechiporuk@vtomske.ru
oleg.bel.76@sibmail.com
shev0809.yandex.ru
elena1411@ngs.ru
Kvazar@mail2000.ru
w70@mail
Fisti@Sibmail.com
mail@mezonin.info

И есть функция, которая должна вывести список всех правильных, соответствующих образцу, емайл-адресов:

function find_ok(obj_find)
{
var re = /^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/ig;
var s = obj_find.value;
var result;
while (result = re.exec(s)) document.write(result[0], "<br>");
}

Но не выводит. Почему-то. Где ошибка?

Octane 09.05.2010 21:39

http://alljs.ru/2009/12/document-write/

Dotod 10.05.2010 06:07

Вот, пытаюсь вывести в див:

function find_ok(obj_find)
{
var re = /^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/ig;
var s = obj_find.value;
var result;
while (result = re.exec(s)) document.getElementById('vstavka').innerHTML = result[0] + " ";
}

Образец написан верно, глобальный поиск true, в строке список адресов, разделенных пробелами. Не работает именно строка while (result = re.exec(s)) document.getElementById('vstavka').innerHTML = result[0] + " ";

Octane 10.05.2010 10:03

Цитата:

Сообщение от Dotod
Не работает именно строка…

Какая ошибка то?

[telepat_mode]
…innerHTML += result[0]…
http://javascript.ru/string-operators
[/telepat_mode]

Dotod 17.05.2010 05:31

Не знаю - это тоже не сработало. Ошибка видимо была в переносах или пробелах м/у строками. Но уже решил проблему, сократив рег. выр. Вот, кому интересно:

function isValidEmail (email)
{email = email.replace(/^\s+|\s+$/g, '');
return (/^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/i).test(email);}

function do_ok_err(obj_find)
{
var s = obj_find.value;
s = s.replace(/\n/g, " ");
array_s = s.split (" ");
var i = 0;
var result2 = "";
var result3 = "";
for (name in array_s)
{
if (isValidEmail (array_s[i])) result2 += array_s[i] + "\n"; document.getElementById("emaillist2").value = result2;
i ++;
}
}


Часовой пояс GMT +3, время: 09:43.