Мне нужно регулярное выражение, которое соответствует номерам от 0 до 99.999 (99,999 также верно).Regex для соответствия номерам 0-99.999
Допустимые примеры:
1,1
99.9
12.876
1,777
Недействительные примеры:
9837,83
-12,24
11.1112
Мне нужно регулярное выражение, которое соответствует номерам от 0 до 99.999 (99,999 также верно).Regex для соответствия номерам 0-99.999
Допустимые примеры:
1,1
99.9
12.876
1,777
Недействительные примеры:
9837,83
-12,24
11.1112
Будет ли эта работа?
[0-9]{1,2}[.,][0-9]{1,3}
это соответствует материал, похожий на этот:
0.0
/01,1
99,999
/09.009
, но не такие вещи, как это:
.0
/,1
/1
/01
099,999
/09.0090
надеюсь, что это помогает.
, если вы имеете в виду вещи la 10 или 25, то это по дизайну. Я никогда не видел, чтобы реквестер хотел сопоставить это. Я говорю это в сообщении :) –
^\d{1,2}(?:[.,]\d{1,3})?$
следует делать.
Объяснение:
^ # anchor the match at the start of the string
\d{1,2} # match one or two digits
(?: # optionally match the following group:
[.,] # a . or ,
\d{1,3} # 1-3 digits
)? # end of optional group
$ # anchor the match the end of the string
Если вы желаете, чтобы проверить число находится в пределах определенного диапазона, вы не должны использовать Regex, он слишком далек от логики, что вы делаете и трудно отлаживать. Я бы сначала заменил запятые на десятичные точки. Затем проверьте диапазон.
например (Javascript)
function isValid(inputString)
{
var number=parseFloat(inputString.replace(',','.'));
return (number>=0 && number <=99.999);
}
Обновлено Ответ
выше решение не учитывает требования Ор, чтобы иметь не более 3 знаков после запятой точности.
function isValid(inputString){
var number=parseFloat(inputString.replace(',','.'));
validPrecision = true;
if (inputString.split('.')[1]) {
validPrecision=inputString.split('.')[1].length<=3;}
return (number>=0 && number <=99.999 && validPrecision);
};
+1 Regex is overkill – marcog
, и в качестве плюса он будет учитывать локали для десятичных и тысяч разделителей –
Пожалуйста, оставляйте комментарии при downvoting! :) Благодаря –
Ниже будет работать:
^\d{1,2}((,|.)\d{1,3})?$
Я не понимаю ваши требования. Вы говорите, что он должен начинаться с 0 и заканчиваться 99,999 или 99,999? Но ваши примеры не показывают этого. Можете ли вы сделать ваши примеры более ясными, разместив отдельные строки, пожалуйста. –
Кроме того, в какой среде разработки вы работаете? –
@ElRonnoco: Я почти вижу «цифры между 0-99.999» (и используя [десятичную запятую] (http://en.wikipedia.org/wiki/Decimal_mark#Countries_using_Arabic_numerals_with_decimal_comma)). –