2010-12-06 3 views
0

Как я могу изменить это регулярное выражение /^[1-9][0-9]{0,3}$|^[1-9][0-9]{0,3}[\.][0-9]$/ видеть, что он принимает «0,1» и «0,2» и так далее значений, но он не должен принимать «0.0»регулярное выражение, чтобы соответствовать этому набору значений

+0

Вы пытаетесь проверить десятичное значение, чтобы увидеть, не является ли это 0.0? – BoltClock 2010-12-06 21:18:13

+1

Какие значения должны быть приняты или не должны приниматься? – 2010-12-06 21:19:00

+0

@Bolt: Iam, желающий принять эти значения 0,1,0,2 и т. Д., И 0.0 недействительно для моего поля, что iam способен проверять – Someone 2010-12-06 21:20:19

ответ

1

RegExp охватывая существующие случаи, но также позволяя десятичные знаки 0.1 <= n <= 0.9.

/^[1-9][0-9]{0,3}$|^[1-9][0-9]{0,3}\.[0-9]$|^0\.[1-9]$/ 

или лучше, из раствора Dreynold в:

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

Старый Ответ, для справки, требования актуализация OP:

Если вы хотите только одного знака после запятой, с существующими допустимыми значениями:

/^[1-9][0-9]{0,3}$|^[1-9][0-9]{0,3}[\.][0-9]$|^0\.[1-9]$/ 

Если только десятичные то:

/^0\.[1-9]$/ 

Если несколько знаков после запятой, то:

/^[1-9][0-9]{0,3}$|^[1-9][0-9]{0,3}[\.][0-9]$|^0\.[1-9][0-9]*$/ 

или

/^0\.[1-9][0-9]*$/ 
2

от одного до четырех цифр, с или без десятичной точностью 1:

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

0,1 через 0,9, шаг 0,1:

/^0\.[1-9]$/ 


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

Это действительно не звучит как проблема регулярных выражений: вы бы гораздо лучше (с ремонтопригодностью и читаемостью точки зрения) обработка ваших чисел в виде чисел и делать простая проверка диапазона:

var isValid = function (x) { 
    // Make sure we're dealing with a number 
    x = parseFloat(x); 
    // If x is greater than zero but less than 0.9 
    // this expression evaluates to true so the 
    // function returns true, otherwise it evaluates 
    // to false so the function returns false. 
    return (x > 0 && x <= 0.9); 
}; 

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

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