Проверка строки на соответствие регулярному выражению
Нужно проверить строку на четкое совпадение регулярному выражению
Строку допустим такая 227,30,218,9,245,6,256,15,246,26 Обязательное условие что б в конце без пробела и без запятой Регулярное выражение сам написал вроде все правильно находит /((\d)+,)+(\d)+/, но вот как это все применить в javascript?
if ( /((\d)+,)+(\d)+/.test('227,30,218,9,245,6,256,15,246,26') ) {
document.write("строка правильная");
}else{
document.write("строка НЕ правильная");
}
|
var re = /^\d[0-9,]+\d$/;
if (re.test( "227,30,218,9,245,6,256,15,246,26" ) ) {
alert("Данная строка соответсвует заявленому патерну");
}
|
var res = /(\d+,)+\d+/.test('227,30,218,9,245,6,256,15,246,26');
var res = /(\d+,)+\d+/.exec('227,30,218,9,245,6,256,15,246,26'); //
var res = '227,30,218,9,245,6,256,15,246,26'.search(/(\d+,)+\d+/); // возвращает индекс начала совпадения или -1
var res = '227,30,218,9,245,6,256,15,246,26'.match(/(\d+,)+\d+/); // возвращает массив с совпадениями
var res = '227,30,218,9,245,6,256,15,246,26'.replace(/(\d+,)+\d+/, 'bubble'); // заменяет регулярку на текст,
// можно использовать "$1" как указатель на первую сохраняющюю группу
|
Возникла не необходимость не немножко видо изменить это выражение /^\d[0-9,]+\d$/
Так что оно не пропускало просто числа , без единой запятой допустим 56 или 263 а пропускало только 56,263 или 26,7 |
Мне кажется в данном случае регулярка - это как из пушки по воробьям. Имхо регулярки нуно юзать там, ну где без них совсем тяжко, а эту задачу можно довольно просто решить следующей функцией (работать буит быстрее чем регулярка):
function test(str){
if (!str) { return false; }
str = str.split(",");
if (!str[1]) { return false; }
for (var i = str.length; i--;) {
if (isNaN(str[i]) || !str[i]) { return false; }
}
return true;
}
test("121"); // false
test("121,"); // false
test(",121"); // false
test("121,4"); // true
|
Код:
/^(\d+,)*(\d+)$/Цитата:
|
/^(\d+,)*(\d+)$/ Не проходит проверку простого числа Цитата:
|
Цитата:
Все работает |
Ну в условие было сказано, что одно число, типо: 56 не должно проходить, а только несколько чисел: 65,2,11,7 и т.д.
![]() |
kobezzza спасибо, за функцию, то что нужно.
|
| Часовой пояс GMT +3, время: 21:23. |