Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Очередная регулярка. Цена (https://javascript.ru/forum/misc/40663-ocherednaya-regulyarka-cena.html)

Redya69 14.08.2013 21:45

Очередная регулярка. Цена
 
Есть такая регулярка:
/^\b\d+,\d{2}\b$/
Она разрешает строку: (любое количество цифр)запятая(две цифры).
Как сделать так, что бы можно было вводить целые значения:
То есть если есть запятая, то после нее должно быть обязательно две цифры. Если нет запятой, то разрешить любое кол-во цифр.
Спасибо

Deff 14.08.2013 21:59

Цитата:

Сообщение от Redya69
Redya69






Есть обрезалка до скок нужно цифр после запятой

alert(77777.7777.toFixed(2))

Redya69 14.08.2013 22:02

спасибо, но это совсем не то

рони 14.08.2013 22:03

Redya69,
/^\b\d+(,\d{2})?\b$/

Redya69 14.08.2013 22:13

Отлично, спасибо!
Только немного подправил: /^\b\d+(,\b\d{2})?$/

bes 14.08.2013 22:21

а если думать чуть меньше, то так :)
/^\b\d+,\d{2}\b$|^\d+$/

danik.js 14.08.2013 22:22

Redya69, а какой смысл тут вобще в этих \b? Начало и конец строки так и так являются границами слов, так ведь? То же самое и с запятой. Так что ты не "подправил" а просто переставил ненужный символ, от чего эффекту 0. Не так ли?

Redya69 15.08.2013 02:16

Я не помню уже какой именно эффект, но до перестановки она точно не работала как надо. Если очень интересно - попробуйте сами

danik.js 15.08.2013 07:08

Цитата:

Сообщение от Redya69
Я не помню уже какой именно эффект, но до перестановки она точно не работала как надо. Если очень интересно - попробуйте сами

Ну попробовал. Результаты одинаковые. Вопрос: зачем оговаривашь регулярку рони? Он тебе помог, а ты в ответ так вот говоришь, что мол его регулярка неправильно работала. Ай-яй-яй, не хорошо...

re = /^\d+(,\d{2})?$/,
re1 = /^\b\d+(,\d{2})?\b$/,
re2 = /^\b\d+(,\b\d{2})?$/;

var tests = {
	'1,10': true,
	'1000,10': true,
	'1,1': false,
	',10': false,
	'10,100': false,
	' 10,10': false,
	'10, 10': false,
	'10 ,10': false,
	'1a,10': false,
	'10,10.': false,
	'10,10\n': false
};

var results =  [re, re1, re2].map(function(re) {
	return Object.keys(tests).every(function(key) {
		return re.test(key) === tests[key];
	});
});

alert(results);


Если не видно разницы - зачем платить больше?

danik.js 15.08.2013 14:13

Хах, этот олень мне еще в карму пукнул с комментарием:
Цитата:

Не прав
Ну если я не прав - так покажи это.
Я если посчитал что неправ ты, то привел код, подтверждающий это.

И вот такие "правые" люди еще приходят и просят помощи на форуме :stop:


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