16.07.2019, 23:02
|
Аспирант
|
|
Регистрация: 14.01.2019
Сообщений: 31
|
|
Проверка списка
Доброго времени суток Вопрос по регулярным выражениям.
Есть список вида:
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
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
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
|
|
17.07.2019, 03:21
|
|
Профессор
|
|
Регистрация: 25.10.2016
Сообщений: 1,012
|
|
/^\s*\d+(?:\s*,\s*\d+)*\s*$/.test(str)
|
|
17.07.2019, 08:04
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,210
|
|
Сообщение от 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=='');
};
|
|
19.07.2019, 03:10
|
Аспирант
|
|
Регистрация: 14.01.2019
Сообщений: 31
|
|
Всем спасибо!
|
|
|
|