2015-05-07 3 views
2

мне нужно сделать регулярное выражение, чтобы соответствовать только поплавки, что я получил следующий:Регулярное выражение, чтобы соответствовать поплавки только

[\-\+]?[0-9]*(\.[0-9]+)? 

Но этот матч также ниже 123123132, 05/03/1994

мне нужно всего лишь хочет, чтобы соответствовать числу с десятичной точкой

+0

Что вы подразумеваете под "float only"? Десятичная точка * требуется * для вас? – L3viathan

+0

yes Мне нужна десятичная точка – osos

+1

Удалите последние '?' И при необходимости используйте якобы '^' и '$'. – sp00m

ответ

2

вашего регулярным выражением почти правильно для вашей цели.

Он находит 123123132, потому что последняя часть не является обязательной. Удаление ? решает это.

[-+]?[0-9]*(\.[0-9]+) 

С этой перестройки, он все еще может найти спички в строках, как .12/39/3239, если вы не хотите, чтобы это произошло, вставить соблюдение соответствия по полной строки, вставляя ^ и $:

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

Спасибо, что именно я хотел – osos

0

Как насчет:

([+-]?[0-9]*\.[0-9]*) 

Вы можете видеть, что это работает here

0

Вот обработки регулярных выражений также существующих экспонента:

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

Regular expression visualization

Debuggex Demo

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

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

Кстати здесь хороший учебник о сопоставлении чисел с плавающей точкой с использованием регулярных выражений: http://www.regular-expressions.info/floatingpoint.html.

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