#регулярные_выражения
Есть регулярка ^([0-9]*\.[0-9]+)$, как сделать чтобы она пропускала числа с плавающей точкой и запятой?
Ответы
Ответ 1
Замените \. на [.,] и уберите лишние скобки: ^[0-9]*[.,][0-9]+$ Чтобы пропускала целые числа, добавьте квантификатор ?: ^[0-9]*[.,]?[0-9]+$ ^ См. демо ^ - начало строки [0-9]* - 0 и более цифр [.,] - точка или запятая ([,.]? - одна или ноль запятых или точек) [0-9]+ - 1 и более цифр $ - конец строки. Если нужно более "продвинутое" выражение, можно воспользоваться ^[-+]?[0-9]*[.,][0-9]+(?:[eE][-+]?[0-9]+)?$ или - чтобы поддерживало и целые, и дробные числа: ^[-+]?[0-9]*[.,]?[0-9]+(?:[eE][-+]?[0-9]+)?$ Это вариант выражения на regular-expressions.info.Ответ 2
Для чисел с плавающей точкой есть несколько записей. Если вы подразумиваете наличие одной точки или запятой, то можно так: ^\d+(?:[\.,]\d+)?$ [0-9]* - вашем случае пропустит невалидную конструкцию , например .5656Ответ 3
Так: ^(0|[1-9]\d*)([.,]\d+)? разрешает целые, дробные, исключает вариант с несколькими нулями перед дробной частью, на подобии: "000.0001".
Комментариев нет:
Отправить комментарий