2016-04-27 2 views
1

мне нужен RegEx шаблон, который ограничен от 0,000 - 1,600REGEX JS шаблон: 0,000 - 1,600

Это то, что я получил до сих пор:

^(?:0(?:\.0)?|0?\.[0-9]{1,3}|1(?:\.0{1,3})?|1?\.[0-6]{1,3})$ 

Regular expression visualization

Debuggex Demo

Задача:

Этот шаблон также допускает значения до 1,666
Но он должен допускать только значения до 1.600.

Может ли кто-нибудь помочь?

+0

Почему бы не удалить точку и проверить его между 0 и 1600, и строки длится 5 символов? ИЛИ начинается с "1." и число от 0 до 600 – mplungjan

+0

regExp слишком сложно, работайте с цифрами! –

+0

проверить мои ans :) –

ответ

3

This регулярное выражение соответствует все числа с плавающей запятой с не более четырех цифр от 0.000 до 1.600. Это также соответствует 0 и 1:

^(?:1(?:\.(?:[0-5]\d{0,2}|60{0,2})|)|0(?:\.\d{1,3})?)$ 

Regular expression visualization

(Кроме того, почему бы не использовать номера?)

+0

Однако он не принимает значения типа «.5», которые, вероятно, должны быть правильными. Но его можно легко зафиксировать: '^ (?: 0 | 0? (?: \. \ D {1,3}) | 1 (?: \. (?: [0-5] \ d {0,2 } | 60 {0,2}))?) $ ' – Razem

+0

Это то, что я хотел, спасибо. Я не хочу, чтобы пользователь входил .6 или что-то в этом роде. Очень признателен! – MarcJohnson

0

Изменение последнего Чередование

1?\.[0-6]{1,3} 

становится

1?\.[0-5]\d{0,2}|1?\.60?0? 
+0

соответствует 1.6 из 1.666 –

+0

@NabeelKhan: Конечно нет, из-за знака '' 'в конце original regex – Toto

-2

Довольно легко, хотя, использовать это регулярное выражение:

((?:0\.\d{3}|1\.[0|1|2|3|4|5]\d{2}|1\.600)) 

Испытано здесь:

https://regex101.com/r/rS6eJ8/3

+0

Это не совпадает с 0.999. – Chiru

+0

Это будет соответствовать '|. | 12' – Toto

+0

обновлено :) теперь это –

0

вы можете сделать это без RegExp, Тэй должны havy для таких задач.

Попробуйте другой метод:

var test = ['0.000', '1.021', '1.600', '1.666'], 
    value; 

for (var i = 0; i < test.length; i++) { 
value = (+test[i] * 1000).toFixed(0); // +test[i] -> convert to number 

if (value < 0 || value > 1600) { 
    console.log('Bad value is: ' + test[i]); // will print 1.666 
} 
} 

реальный пример https://jsfiddle.net/xrwupphj/

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