Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с регулярным выражением (https://javascript.ru/forum/misc/33609-problema-s-regulyarnym-vyrazheniem.html)

kolyan1983 29.11.2012 12:48

Проблема с регулярным выражением
 
Задача проверить что строка состоит только из 10-значных чисел, при этом каждое число с новой строки. Т.е. вида:

4445555667
9999999998
5556667789

Я проверяю это так:

var re = new RegExp("^[0-9]{10}$", "mg");
if (re.test(string)) {
alert('всё ок');
} else {
alert('ошибка');
}

но это не работает. Например если строка

4445555667
99999

или даже

4445555667
sdfsfs

выдаёт что всё ок. Что я делаю не так?

lord2kim 29.11.2012 13:08

kolyan1983,
var str1 = "4445555667\n\
9999999998\n\
5556667789",
str2 = "4445555667\n\
99999",
str3 = "4445555667\n\
sdfsfs";
 
function str_test(str) {
    var er = 0; alert(str);
    str = str.replace("\r\n", "").split("\n");
    for (i = 0; i < str.length; i++) {
        if (isNaN(str[i]) || str[i].length != 10) {
            er = 1; break;
        }
    }
    if (er != 0) { return alert("ошибка"); }
    else { return alert("все ок!"); }
}
 
str_test(str1);
str_test(str2);
str_test(str3);

kolyan1983 29.11.2012 13:12

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

dmitriymar 29.11.2012 13:23

Цитата:

Сообщение от kolyan1983
выдаёт что всё ок. Что я делаю не так?

ты регуляркой ищешь вхождение строки. если хоть одна строка будет совпадать с шаблоном , то определится соответствие шаблону и вернёт что соответствие найдено
Варианты:
разбить на строки и проходить по ним регуляркой -если хоть одна строка не соответствует шаблону ретурн не ок

воспользоваться методом match -если количество соответствий меньше чем строк -ошибка

dmitriymar 29.11.2012 13:30

lord2kim,
привёл вариант работающий быстрее чем поиск регуляркой.


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