Как можно оформить регулярное выражение (4 разряда 3 3 3 ...))
0000 000 000 000 : 13
0000 000 000 000 00 : 15 0000 000 000 000 000 : 16 0000 000 000 000 000 00 : 18 0000 000 000 000 000 000 : 19 Как в зависимости от длины, задать вот такую маску ? Вот пример кода, на основе которого это пытаюсь сделать.
<br />
<h2>Кредитная карта </h2>
<div>
<input class="creditCardInput2" value="" placeholder="Введите номер кредитной карты" size="65" />
</div>
function validateRealTimeCreditCardNumber(selector) {
//var events = ['input', 'change', 'blur', 'keyup'];
var events = "input change blur keyup";
var lengthCreditCardNumber = 19;
var reg = /[^\d]/g; /*все кроме цифр*/
var regGroupDigit = /[\d]{1,4}/g;
var cardCode;
/*цикл */
$(selector).each(function () {
$(selector).on(events, function () {
/*удаляются все символы, кроме цифр, а также любые символы, после достижения указанного предела*/
var cardCode = this.value.replace(reg, '').substring(0, lengthCreditCardNumber);
/*текущее значение из поля ввода, форматируется согласно регулярному выражению,
в данном случае ищются символы от 1 до 4 и после такой группы символов, ставится пробел*/
if(cardCode !== ''){
cardCode.match(regGroupDigit).join(" ");
}else{
cardCode = '';
}
this.value = cardCode;/*записываев в поле ввода, проверенный символ (если он там есть)*/
});
});
|
Вы имеете в виду, что есть код и его нужно отформатировать.
var re = /(?!^\d{4})(\d{3})(?=(?:\d{1,3})+$)/g;
alert("1234567890123456789".replace(re, "$1 "));
Т. е. если у вас есть строка s, то в отформатированном виде она будет равна s.replace(re, "$1 "), где re является регулярным выражением из примера выше. Пример целиком...
<input class="creditCardInput2" placeholder="Введите номер кредитной карты" required autocomplete="cc-number">
<script>
function validateRealTimeCreditCardNumber(selector) {
document.addEventListener("input", function(event) {
var target = event.target;
if(target.matches(selector)) {
target.value = target.value
.replace(/[^\d]/g, "")
.replace(/^(.{19}).*$/g, "$1")
.replace(/(?!^\d{4})(\d{3})(?=(?:\d{1,3})+$)/g, "$1 ");
}
});
}
validateRealTimeCreditCardNumber("[autocomplete=cc-number]");
</script>
Используйте автозаполнение номера кредитной карточки, чтобы пользователям меньше вводить! |
:)
<script>
var re = /((^\d)?\d{1,3})/g;
document.write(
[
"1234567890123".match(re).join(" "),
"123456789012345".match(re).join(" "),
"1234567890123456".match(re).join(" "),
"123456789012345678".match(re).join(" "),
"1234567890123456789".match(re).join(" ")
].join("<br>")
);
</script>
|
то что нужно, спасибо
|
| Часовой пояс GMT +3, время: 18:09. |