Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверка списка (https://javascript.ru/forum/misc/78035-proverka-spiska.html)

Himmelin 16.07.2019 23:02

Проверка списка
 
Доброго времени суток ;) Вопрос по регулярным выражениям.

Есть список вида:

1,2,3,4,5,6,7....10,11,...1000,1001

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

То есть списки вида:

1б2ю3,4,5,6,6
1,,2,4,5,,,,,6,7
1,2,3,4,5,yyy,6

Должны при проверке инициировать ошибку.

Пробовал вот так:
let regularExpression =  /[\D^\,]/ig
, но не работает

рони 16.07.2019 23:29

Himmelin,
function fn(str)
    {
       return str.split(",").every( num => num.trim() && num == Number(num))
    }
    let str = "1,2,3,4,   5,6  ,7";
    alert(fn(str)); //true
    str = "1б2ю3,4,5,6,6";
    alert(fn(str)); //false
    str = "1,,2,4,5,,,,,6,7";
    alert(fn(str)); //false
    str = "1,2,3,4,5,yyy,6";
    alert(fn(str)); //false

Alexandroppolus 17.07.2019 03:21

/^\s*\d+(?:\s*,\s*\d+)*\s*$/.test(str)

ksa 17.07.2019 08:04

Цитата:

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

То есть списки вида:

1б2ю3,4,5,6,6
1,,2,4,5,,,,,6,7
1,2,3,4,5,yyy,6

Должны при проверке инициировать ошибку.

Предложу такой вариант...
alert(test('1,2,3,4,5,6,7'));
alert(test('1, 2,3 ,4, 5 ,6,7'));
alert(test('1б2ю3,4,5,6,6'));
alert(test('1,,2,4,5,,,,,6,7'));
alert(test('1,2,3,4,5,yyy,6'));
function test(Str){
	var re=/(^|,)\s*?\d+\s*/g;
	var val=Str.replace(re,'');
	return Str+' - '+(val=='');
};

Himmelin 19.07.2019 03:10

Всем спасибо! :victory:


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