2015-04-02 3 views
2

У меня ниже регулярного выражения для проверки двойных значений. Это не принимает запятую. может кто-нибудь мне помочь?Регулярное выражение для двоичного значения с запятой

^[-+]?[0-9]+[.]?[0-9]*([eE][-+]?[0-9]+)?$ 

Новое регулярное выражение должно принять эти значения
1.000
1000000,01
1,000,000.00
1.4E-45
3.4028235E38

+0

Почему, по вашему мнению, это регулярное выражение должно принимать запятую? Какую часть этого вы считаете ответственной за это? – Pshemo

ответ

4
^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?([eE][-+]?[0-9]+)? 

Это простое исправление - просто добавляет в 0 или более блок дополнительной запятой, затем b y 3 числа.

Я также изменил блок после вашего необязательного десятичного числа, чтобы гарантировать, что за десятичным знаком следует хотя бы одно число. (так что вы не согласны с 52.)

+0

Я не уверен в ваших правилах запятой - вы можете изменить его, чтобы указать, сколько цифр должно появиться после запятой (например, 3), если хотите. –

+3

'(,? [0-9] +) *' должно быть, должно быть '(, [0-9] {3}) *' - отметить отсутствие '?' Перед запятой (его опциональность будет обрабатываться ') * 'part), мы не хотим делать это необязательным здесь, так как это может сделать проблематичным откат (не сказать катастрофическим). – Pshemo

+0

Хорошая точка в обратном направлении @Pshemo! –

Смежные вопросы