Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.05.2010, 21:31
Интересующийся
Отправить личное сообщение для Dotod Посмотреть профиль Найти все сообщения от Dotod
 
Регистрация: 30.11.2009
Сообщений: 20

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

Есть список емайл-адресов в 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>");
}

Но не выводит. Почему-то. Где ошибка?
Ответить с цитированием
  #2 (permalink)  
Старый 09.05.2010, 21:39
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

http://alljs.ru/2009/12/document-write/
Ответить с цитированием
  #3 (permalink)  
Старый 10.05.2010, 06:07
Интересующийся
Отправить личное сообщение для Dotod Посмотреть профиль Найти все сообщения от Dotod
 
Регистрация: 30.11.2009
Сообщений: 20

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

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] + " ";
Ответить с цитированием
  #4 (permalink)  
Старый 10.05.2010, 10:03
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

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

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

Последний раз редактировалось Octane, 10.05.2010 в 10:06.
Ответить с цитированием
  #5 (permalink)  
Старый 17.05.2010, 05:31
Интересующийся
Отправить личное сообщение для Dotod Посмотреть профиль Найти все сообщения от Dotod
 
Регистрация: 30.11.2009
Сообщений: 20

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

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 ++;
}
}
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Извлечь значение параметра из location.search регулярным выражением? Бобр Общие вопросы Javascript 8 26.01.2010 01:01
Отлов круглых скобок регулярным выражением Kuzya59 Общие вопросы Javascript 2 25.12.2009 13:05