Регулярное выражение с зачисткой
Здравствуйте.
Суть проблемы в том, что нужно контролировать формы на вводимый бред. Если нужно разрешить вводить только цифры, то тут просто регуляркой режу все ненужное:
var str = jQuery(this).val();
if(!(/^[0-9]*$/.test(str))) {
jQuery(this).val(str.replace(/^[0-9]*/,''));
}
// З.Ы. Честно от куда то стырено...
А теперь стал вопрос сложнее. В поле нужно ввести текст в формате XXXX00000, найти такое чудо я смог, а вот как зачистить все лишнее...
var str = jQuery(this).val();
if(!(/\w{4}\d{5}/.test(str))) {
jQuery(this).val(str.replace(/\w{4}\d{5}/,''));
}
Подскажите, куда копать? Делать карманы и по отдельности каждый карман чистить? Тогда не будет соблюден формат. И опять таки, наверно и поиск организуется неверно. |
Цитата:
|
Deff,
AAAA00057 BBBB00210 ADNB34238 Примерно такие варианты. |
Quieteroks,
Приведите так же для каждой строки итоговый, "очищенный вид" |
Deff,
Так это и есть итог. А на вход могут завести: BBB888 DGDK0222 Но это еще ничего страшного. Главное чтоб некоторые могут вставить русские буквы. В целом конечно для упрощения можно зарезать все символы, кроме \w\d, но тогда формат и длина не соответствуют. Вот прям не знаю, как лучше делать. |
Цитата:
|
Quieteroks,
Еще раз: Приведите пару входных "неочищенных" строк и напротив каждой итоговый вид очищенной строки |
nerv_,
Ух какая интересная книжка. Обязательно прочитаю. Deff, Я даже уже начинаю сомневаться в правильности подхода... Когда начинаю задумываться, как это организовывать и что должно быть на выходе. Наверно в данном случае буду усложнять/упрощать процедуру. Проще чистить вводные символы по нажатию кнопки, т.е. запретить кириллицу. Несоответствие формату, регулярка для проверки имеется, можно по итогам заполнения проверить и сообщить об ошибочности действий. Спасибо за наводящий вопрос. |
<input type="text" onkeyup="noTxt(this)" oninput="noTxt(this)" onkeydown="noTxt(this)"/>
<script type="text/javascript">
function noTxt(a){
var b=a.value;
var c=b.replace(/\D/,'');
if(b!=c){a.value=c; alert("Вводим только цифры!!!");setTimeout(function noTxt(){a.value=c},299);};
}
</script>
|
Цитата:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<script src="http://code.jquery.com/jquery-latest.js"></script>
<title></title>
</head>
<body>
<input name="test" id="test"/>
<script type="text/javascript">
$("#test").on("keyup blur", function () {
var str = $(this).val(), reg = "[A-Z] [A-Z] [A-Z] [A-Z] [0-9] [0-9] [0-9] [0-9] [0-9]".split(" "),
len = str.length > reg.length ? reg.length : str.length;
for (var a = 0; a < len && RegExp(reg[a]).test(str.charAt(a)); a++);
$(this).val(str.slice(0, a))
});
</script>
</body>
</html>
|
| Часовой пояс GMT +3, время: 21:18. |