Как можно оформить регулярное выражение (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, время: 12:06. |