2014-11-21 2 views
1

я нашел следующее решение для добавления тира после каждого 4-го символа:Как продлить это регулярное выражение в соответствии с этой маской?

$('.number_to_format').keyup(function() { 
    var foo = $(this).val().split("-").join(""); 
    if (foo.length > 0) { 
     foo = foo.match(new RegExp('.{1,4}', 'g')).join("-"); 
    } 
    $(this).val(foo); 
}); 

Но у меня есть более трудная проблема решить, мой вклад должен соответствовать именно этому формату, как я набираю номер:

99999999 -9-99

Так что ставьте тире после 8-го и 9-го символов автоматически.

Я уже пробовал плагины маскировки jQuery, но я хочу решение без плагинов.

Как продлить регулярное выражение выше, чтобы заставить это работать? Благодаря

+0

Что вы ожидали выход для '99999999-9-99'? – anubhava

+0

Когда я вводил ввод, он автоматически добавляет тире, точно так же, как например. поле серийного номера Windows. Извините, но foo.replace (/^(. {8}) (.) /, "$ 1- $ 2-") не выполнял эту работу, но спасибо в любом случае – David

ответ

1

(Выход будет 99999999-9-99)

<input type="text" id="data"> 

$(document).ready(function() 
$('#data').keyup(function() { 
    var x = $(this).val(); 
    console.dir(x); 
    x = x.replace(/[^0-9]/gi, ''); 
    if (x.length > 9) x = x.replace(/(\d{8})(\d)(\d+)/, '$1-$2-$3'); 
    else if (x.length > 8) x = x.replace(/(\d{8})(\d+)/, '$1-$2'); 
    else x = x; 
    $(this).val(x); 
}); 
}); 

Demo here

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