2017-01-04 3 views
-1

У меня нет опыта работы с RegEx. У меня есть текстовое поле, которое я хочу проверить с помощью JavaScript.RegEx близок к тому, что мне нужно.

^(\ d {0,5}. \ D {0,4})? $

Это довольно близко к тому, что мне нужно, за исключением того, что это позволит 6 цифр перед десятичной, если ничего не приходит после того, как десятичной. 5 цифр до десятичной и 4 цифры после должны быть макс. Я хочу, чтобы что-то под этим было разрешено.

Ex: 123456 действителен, когда этого не должно быть. 123456.1 является недопустимым и не должно быть.

Часть функции JS:

if (document.getElementById("txtPrice").value !== "") { 
    var RegEx = /^(\d{0,5}.\d{0,4})?$/; 

    if (RegEx.test(document.getElementById("txtPrice").value) == false) { 
    alert("Contract Price is entered as an invalid format."); 

    return false; 
    } 
} 
+1

вам понадобится обратная связь, которая отсутствует в javascript. возможно, разделение строки было бы проще. –

+1

вам нужно избежать '.' с' \ (обратная косая черта) 'в вашем коде, иначе он будет рассматриваться как * любой символ *, и именно поэтому' 123456' является действительным – pwolaq

ответ

4

Использование \.. . соответствует любому символу, один раз, \. соответствует точечный характер:

^(\d{0,5}\.\d{0,4})$ 

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

^(\d{0,5}(?:\.\d{0,4})?)$ 
+0

Спасибо. Именно то, что мне нужно. – madmike

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