Проблема извлечения подстрок регулярным выражением
Снова здравствуйте.
Есть список емайл-адресов в 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>"); } Но не выводит. Почему-то. Где ошибка? |
|
Вот, пытаюсь вывести в див:
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] + " "; |
Цитата:
[telepat_mode] …innerHTML += result[0]… http://javascript.ru/string-operators [/telepat_mode] |
Не знаю - это тоже не сработало. Ошибка видимо была в переносах или пробелах м/у строками. Но уже решил проблему, сократив рег. выр. Вот, кому интересно:
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, время: 18:30. |