24.06.2011, 11:43
|
Профессор
|
|
Регистрация: 21.02.2011
Сообщений: 160
|
|
Проверка строки на соответствие регулярному выражению
Нужно проверить строку на четкое совпадение регулярному выражению
Строку допустим такая 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("строка НЕ правильная");
}
|
|
24.06.2011, 12:29
|
Профессор
|
|
Регистрация: 01.02.2010
Сообщений: 364
|
|
var re = /^\d[0-9,]+\d$/;
if (re.test( "227,30,218,9,245,6,256,15,246,26" ) ) {
alert("Данная строка соответсвует заявленому патерну");
}
|
|
24.06.2011, 12:37
|
|
Аспирант
|
|
Регистрация: 25.02.2010
Сообщений: 57
|
|
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" как указатель на первую сохраняющюю группу
|
|
16.07.2011, 23:50
|
Профессор
|
|
Регистрация: 21.02.2011
Сообщений: 160
|
|
Возникла не необходимость не немножко видо изменить это выражение /^\d[0-9,]+\d$/
Так что оно не пропускало просто числа , без единой запятой
допустим
56
или
263
а пропускало только
56,263
или
26,7
|
|
17.07.2011, 00:52
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Мне кажется в данном случае регулярка - это как из пушки по воробьям. Имхо регулярки нуно юзать там, ну где без них совсем тяжко, а эту задачу можно довольно просто решить следующей функцией (работать буит быстрее чем регулярка):
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
|
|
17.07.2011, 01:43
|
Профессор
|
|
Регистрация: 14.12.2009
Сообщений: 155
|
|
Обратите внимание на "звездочку" вместо "плюсика".
Сообщение от kobezzza
|
регулярки нуно юзать там, ну где без них совсем тяжко, а эту задачу можно довольно просто решить следующей функцией (работать буит быстрее чем регулярка)
|
Не стоит забывать про простоту сопровождения и излишнюю тягу к преждевременной оптимизации.
Последний раз редактировалось with-love-from-siberia, 17.07.2011 в 01:46.
|
|
17.07.2011, 01:54
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
/^(\d+,)*(\d+)$/
Не проходит проверку простого числа
Цитата:
|
Не стоит забывать про простоту сопровождения и излишнюю тягу к преждевременной оптимизации.
|
Ну за мной есть такой грешок, а вообще нужно смотреть по обстоятельствам)
|
|
17.07.2011, 10:31
|
Профессор
|
|
Регистрация: 14.12.2009
Сообщений: 155
|
|
Сообщение от kobezzza
|
Не проходит проверку простого числа
|
Что в Вашем понимании простое число? Что значит не проходит?
Все работает
|
|
17.07.2011, 15:28
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Ну в условие было сказано, что одно число, типо: 56 не должно проходить, а только несколько чисел: 65,2,11,7 и т.д.
Последний раз редактировалось kobezzza, 17.07.2011 в 15:45.
|
|
17.07.2011, 22:33
|
Профессор
|
|
Регистрация: 21.02.2011
Сообщений: 160
|
|
kobezzza спасибо, за функцию, то что нужно.
|
|
|
|