- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
function CheckNumField(value)
{
for(var i=0; i<value.length; i++)
{
switch(value.substr(i,1))
{
case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '.':
return true;
break;
default:
return false;
break;
}
}
}
По теме: а ведь длина поля текстового - 1, да?
Только что-то тут лишнее: или return, или последующий break.
переносим в качестве дефолтного ретурна в конец функции.
З.Ы: верно замечено - останутся случаи вида 666.66.666.
Правда я тут "доложил" до общей кучи ;)
А почему бы их не применить вместе? :) Я бы еще добавил ^-? в регулярку, чтоб парсить отрицательные числа, но в ОП этого нет.
Если что-то и добавлять, то тест на попадание в диапазон допустимых значений. Например от 0 до 100.
Отрицательные числа - ну зависит от задачи. Если это какая-то цена или количество, то явно не нужны.
Да, и еще, в ж.скрипте можно флоаты записывать так: .123456, т.е. без ведущего нуля.
Если бы не считал - на NaN была бы проверка isNaN, +-Infinity и слишком большие числа с экспонентой срезались бы проверкой на диапазон. ".123456" особой угрозы не представляет.
> конечные автоматы
Емнип, если верить теории, они эквивалентны ;)
Ну это какой-нибудь perl6. А классические регулярки эквивалентны конечному автомату (и обычно в него и компилируются). Поэтому ими и нельзя вменяемо парсить рекурсивные структуры типа XML и HTML.
> про парсинг html регулярками
Зачем это делают в век xpath? :)
> 4к плюсов первому говнокоменту
Речь об этом комменте? "Согласно коду, 2 6, 6Y и .ммм - числа, как ни верти..."
а это от задачи зависит отдельный фаил проще выкалупать регеспом
Другое дело что далеко не все DOM либы умеют парсить кривожопый HTML (в отличие от кошерного XML). Скорее всего в этом и причина.
Говнисто, длинно и недостаточно корректно. (Но написать это быстрее, чем возиться с парсерами)
Я хотел полноценное API делать, с блекджеком и отправкой, поэтому и начал возиться с парсером. Писать регулярки для выдирания всей инфы со всех вариантов страничек было бы сизифовым трудом... Но на API я забил из-за вселенской лени, и от него осталось только говнотифи ;)
> чем возиться с парсерами
С парсером возиться 1 раз, пока не распарсишь им свою первую хтмлку. Дальше - на порядки легче :)
Ну а так - не спорю, для одноразового парсинга регулярки вполне сойдут.
Выковырять содержимое одного тега регуляркой тоже несложно и работает быстрее. И юзать регулярки поначалу действительно проще, чем в первый раз разобраться с xpath. xpath нужен там, где нужно именно дерево. Ну и недавно был пиздец, когда я чистил html регулярками, так в разных страницах в одном месте было два пробела, в другом - пробел и \xa0, я чуть не ебанулся - выглядит так же, а регулярка не отрабатывает.
Кое-где регекспы даже лучше, например, нарисуй мне замену "(<br>)+" на "<br><br>" с xpath.
> xpath
XPath это всего лишь селектор, сам по себе он ниче менять не умеет... Так что на этой задаче сравнивать его с регулярками не совсем честно.
Будет длинноватый код - заселектить xpath'ом нужные ноды и для каждой добавить в ее родителя еще одну ноду с <br>. Ничего сложного, но писанины больше, чем той регуляркой, это факт.
>Ничего сложного, но писанины больше, чем той регуляркой, это факт.
Код в студию. С регекспами задача решается в лоб без раздумий.
Искать может. Заменять - только внешними средствами, например правкой нод через DOM. Есть еще XSLT, вот там эта задача тоже решается влоб, но писанины очень много (впрочем, в XSLT ее всегда много): > Код в студию.
До эклипса доберусь - напишу.
Писал влоб, без раздумий, может быть можно и лучше, но маловероятно ;) Один раз заглянул в ман в поисках insertAfter, которого там не оказалось, зато нашелся insertBefore. > в лоб без раздумий
мне кажется, правильней было бы назвать number? знак вопроса уже заменяет is. Ну и studlyCaps в руби вроде бы не используется. В классах CamelCase, в методах - gnu_style(), как в питоне.
Как в си?
Кстати, в XBMC сишное апи почему-то в жава стиле.
Хм, а что тут тонкого? Это, скорее, копетанство ;)
популярная здесь выдержка из консоли вебкита:
'1 ', '' явно не все готовы видеть в качестве строкового представления чисел :)
> '1 ', '' явно не все готовы видеть в качестве строкового представления чисел :
Кстати, а жс умеет с ним оперировать?
Проявляют толерантность ;)
❤❤❤
А вот комментарии
http://cs7009.vk.me/c540105/v540105274/8b19/zQGZb2G-F50.jpg
ru-antireligion.livejournal.com/10825973.html
Сразу тебе на это ссылку не давал. А то начал бы еще свою казырную речь про говноблоги.
http://content.gaydemon.com/pictures/7/a/71af760083d39633bc0af3ab4f43f9da.jpg
Или я ошибаюсь?
;O
:D