Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   RegExp для всего кроме целого числа или десятичной дроби (https://javascript.ru/forum/misc/12768-regexp-dlya-vsego-krome-celogo-chisla-ili-desyatichnojj-drobi.html)

ruslanchek 02.11.2010 14:03

RegExp для всего кроме целого числа или десятичной дроби
 
Привет, подскажите плиз регулярку, которая бы резала все, кроме целых чисел и десятичных дробей, у меня сейчас вот такое выражение:

var regexp = new RegExp('[^0-9.]');
var str = '0.7';
var result = str.replace(regexp, '');
alert(result);


Но оно позволяет ввести такое число - "0.756.12.12.12.23...", а нужно, чтобы только одна точка могла быть.

Спасибо всем огромное! :-)

vladlen 02.11.2010 14:12

^(\d+)?([.,]\d+)

exec 02.11.2010 18:06

^(?:\d+(?:\.\d+)?)$

vladlen 03.11.2010 02:16

Цитата:

Сообщение от exec (Сообщение 77084)
^(?:\d+(?:\.\d+)?)$

И че мы добились не захватывающей маской? Да еще и по жесткому условию

exec 03.11.2010 04:17

<script type='text/javascript'>
	alert(/^(\d+)?([.,]\d+)/.test('7')); // false
	alert(/^(\d+)?([.,]\d+)/.test('7.5d')); // true
</script>

vladlen 03.11.2010 13:04

exec, я понял :)
Только ты написал
Цитата:

^(?:\d+(?:\.\d+)?)$
А надо было: (\d+)?([\.,]\d+)?

exec 03.11.2010 14:06

<script type='text/javascript'>
	alert(/(\d+)?([\.,]\d+)?/.test('epic7fail')); // true
</script>


test() проверяет не на полное соответствие строки, а на вхождение подстроки, подходящей под регулярное выражение.

рони 03.11.2010 15:26

А может проще без регулярок )))
var str = '0.756';
var result =  isNaN(str)?'':str;
alert(result);

Aetae 03.11.2010 16:52

Цитата:

Сообщение от рони (Сообщение 77258)
А может проще без регулярок )))
var str = '0.756';
var result =  isNaN(str)?'':str;
alert(result);

Гениально!)))

bugmenot 03.11.2010 22:05

alert(isNaN("Infinity"));

Цитата:

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


Часовой пояс GMT +3, время: 23:57.