Привет всем! Я пытаюсь написать регулярное выражение в JavaScript, которое будет пропускать только положительные числа. Сейчас у меня есть такой вариант:
/^\d+$/
Он работает для цифр, но мне нужно убедиться, что число больше нуля. При этом я хочу, чтобы выражение пропускало числа вроде 0000123123123.
Может, кто-нибудь подскажет, как это сделать? Я не очень силен в регулярках, поэтому буду благодарен за любую помощь. Заранее спасибо!
Поможет такое выражение: /^(?!0+$)\d+$/. Оно позволяет любое количество цифр, но исключает только нули. Так что 0000123 пройдет, а 000 - нет. Главное не забудь использовать test() для проверки строки. А вообще, может проще просто сравнивать с нулем после parseFloat()? Регулярки иногда слишком мудреные.
Регулярка для положительных чисел может выглядеть так: /\d*$|^0+[1-9]\d*$/. Это покрывает числа от 1 и выше, а также случаи с ведущими нулями типа 0000123. Но честно, для проверки чисел лучше использовать обычное сравнение после преобразования в число - это и читабельнее, и надежнее. С регулярками легко запутаться, особенно когда проект разрастается.
регулярка конечно классная штука, но иногда от нее больше головной боли чем пользы. я бы на твоем месте просто сделал что-то типа:
function isPositive(num) {
return parseFloat(num) > 0;
}
это и проще понять и меньше шансов накосячить. плюс оно будет работать с десятичными числами, если вдруг понадобится. а то с регулярками легко запутаться, особенно когда код потом придется поддерживать.