Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.02.2019, 19:02
Аспирант
Отправить личное сообщение для alex-romanov Посмотреть профиль Найти все сообщения от alex-romanov
 
Регистрация: 02.02.2019
Сообщений: 67

Как можно оформить регулярное выражение (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;/*записываев в поле ввода, проверенный символ (если он там есть)*/
        });
    });

Последний раз редактировалось alex-romanov, 10.02.2019 в 19:05.
Ответить с цитированием
  #2 (permalink)  
Старый 10.02.2019, 19:27
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Вы имеете в виду, что есть код и его нужно отформатировать.

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>


Используйте автозаполнение номера кредитной карточки, чтобы пользователям меньше вводить!

Последний раз редактировалось Malleys, 10.02.2019 в 19:53.
Ответить с цитированием
  #3 (permalink)  
Старый 10.02.2019, 20:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072


<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>

Последний раз редактировалось рони, 10.02.2019 в 20:02.
Ответить с цитированием
  #4 (permalink)  
Старый 11.02.2019, 21:32
Аспирант
Отправить личное сообщение для alex-romanov Посмотреть профиль Найти все сообщения от alex-romanov
 
Регистрация: 02.02.2019
Сообщений: 67

то что нужно, спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярное выражение и метод test tsigel Общие вопросы Javascript 3 30.08.2013 13:47
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Как можно нажать сразу на несколько кнопок? Yan.Total Events/DOM/Window 2 21.03.2013 11:02
Как написать регулярное выражение для поиска до конца строки isqad88 Общие вопросы Javascript 3 11.02.2012 15:34
Как можно отловить id который добавил с помощью append() ? saturn Элементы интерфейса 4 17.01.2012 01:35