2015-01-22 6 views
-1

Я получил форму Jsp, и некоторые из полей взять сумму в долларах:Разрешить сохранение ряда, который начинается с десятичной точкой

<tr id="amount" style="visibility: visible;"><td> 
<numbered>1)&nbsp </numbered>Total Compensation: US$ 
<html:text maxlength="11" size="11" property="user.compensation" styleClass="required greaterThan0 compensation currency"/> 
<span class="mandatory">!</span> 
<br/><span class="errors"></span><br/> 
</td></tr> 

Он использует jquery.validate.js для проверки , и было предложено, чтобы мы вводили и сохраняли числа, такие как «.123» (vs 0,123).

Функция в Js указывает:

// http://docs.jquery.com/Plugins/Validation/Methods/number 
number: function(value, element) { 
     return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value); 
}, 

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

+0

Попробуйте изменить '\ d {1,3}' на '\ d {0,3}' – Halcyon

+0

@Halcyon, спасибо за помощь; все же не может сэкономить. – sharcfinz

ответ

0

этот раздел вашего регулярного выражения:

(?:\d+|\d{1,3}(?:,\d{3})+) 

Матчи цифры от до десятичной точки. Это соответствует 1 или более цифр (\d+) или от 1 до 3 цифры запятой и еще 3 цифры один или несколько раз (The \d{1,3}(?:,\d{3})+ часть)

Так, только делают его по желанию:

^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$ 
          ^
          | 
        Matches 0 or 1 times 

Протестируйте его here и обратите внимание, что regex101 - действительно полезный инструмент для расшифровки регулярных выражений, и вы должны его использовать.