function isNumeric(x) {
return parseFloat(x) == x;
}
Тесты от вопроса:
console.log('trues');
console.log(isNumeric('-1'));
console.log(isNumeric('-1.5'));
console.log(isNumeric('0'));
console.log(isNumeric('0.42'));
console.log(isNumeric('.42'));
console.log('falses');
console.log(isNumeric('99,999'));
console.log(isNumeric('0x89f'));
console.log(isNumeric('#abcdef'));
console.log(isNumeric('1.2.3'));
console.log(isNumeric(''));
console.log(isNumeric('blah'));
еще Некоторые тестовые сценарии:
console.log('trues');
console.log(isNumeric(0));
console.log(isNumeric(-1));
console.log(isNumeric(-500));
console.log(isNumeric(15000));
console.log(isNumeric(0.35));
console.log(isNumeric(-10.35));
console.log(isNumeric(2.534e25));
console.log(isNumeric('2.534e25'));
console.log(isNumeric('52334'));
console.log(isNumeric('-234'));
console.log(isNumeric(Infinity));
console.log(isNumeric(-Infinity));
console.log(isNumeric('Infinity'));
console.log(isNumeric('-Infinity'));
console.log('falses');
console.log(isNumeric(NaN));
console.log(isNumeric({}));
console.log(isNumeric([]));
console.log(isNumeric(''));
console.log(isNumeric('one'));
console.log(isNumeric(true));
console.log(isNumeric(false));
console.log(isNumeric());
console.log(isNumeric(undefined));
console.log(isNumeric(null));
console.log(isNumeric('-234aa'));
Примечание, что это считает бесконечность числом.
У вас много ограничений, но есть одна вещь, которая всегда работает: взломать исходный код.
Вы можете легко создать свой собственный svn для Linux, хотя создание этого мода может или не может расслабьтесь". В любом случае, если у вас нет управляемых символьных ссылок, вы можете сделать грубый взлом и просто заставить svn всегда следовать за ними, как если бы они были жесткими ссылками.
Если ваш репозиторий действительно содержит версионные ссылки, и вам нужно проверить Из этой части вам понадобится более изощренный прием, который, скажем, использует свойство, которое управляет функцией для каждого файла или для каждой иерархии или чего-то еще.
Может быть еще один выбор: версионные ссылки появились в 1.1.0 , если бы поведение до этого заключалось в переходе по символическим ссылкам, возможно, вы могли бы просто запустить старый клиент.
Идея: добавить разделяемую библиотеку с помощью LD_PRELOAD, которая перехватывает stat / open / unlink и т. Д., Чтобы svn не видел символические ссылки. Это избавит вас от необходимости изменять исходный код svn.