I have a textbox where I want only allowed up to 11 digits, an optional ma, and two more digits after it. Anything else should not be rendered when the key is pressed into the textbox:
$('#txt').keypress(function (e) {
var code = e.which;
var key = String.fromCharCode(code);
// REGEX TO AVOID CHARS & A DOT (.)
var pattern = /[a-zA-Z]|\./g;
var isMatch = pattern.test(key);
if (isMatch) {
// DO NOT RENDER CHARS & dot
e.preventDefault();
}
});
The above code works when an invalid key is pressed, such as a char or a dot, but does not ensure only one ma and only 2 digits afterwards.
This must match:
12314
123123,44
This must not:
12313,6666
Here is a demo.
UPDATE: Any digit except numbers and ma must be avoided, so the regex I proposed is not valid since only prevents dots (.).
I have a textbox where I want only allowed up to 11 digits, an optional ma, and two more digits after it. Anything else should not be rendered when the key is pressed into the textbox:
$('#txt').keypress(function (e) {
var code = e.which;
var key = String.fromCharCode(code);
// REGEX TO AVOID CHARS & A DOT (.)
var pattern = /[a-zA-Z]|\./g;
var isMatch = pattern.test(key);
if (isMatch) {
// DO NOT RENDER CHARS & dot
e.preventDefault();
}
});
The above code works when an invalid key is pressed, such as a char or a dot, but does not ensure only one ma and only 2 digits afterwards.
This must match:
12314
123123,44
This must not:
12313,6666
Here is a demo.
UPDATE: Any digit except numbers and ma must be avoided, so the regex I proposed is not valid since only prevents dots (.).
You should test your plete string, not only the current letter.
$('#txt').keypress(function (e) {
var key = String.fromCharCode(e.which);
var pattern=/^[0-9]{1,11}(,[0-9]{0,2})?$/;
// test this
var txt = $(this).val() + key;
if (!pattern.test(txt)) {
e.preventDefault();
}
});
jsfiddle example
This regex
will match any string containing 1 up to 11 digits optionally followed by a ,
and exactly 2 more digits: ^[0-9]{1,11}(,[0-9]{2})?$
Explanation:
^ # Match the start of the string
[0-9]{1,11} # Followed by a maximum of 11 digits
(,[0-9]{2})? # Optionally followed by a ma and 2 more digits
$ # Followed by the end of the string
See it in action here.