Регулярное выражение с зачисткой
Здравствуйте.
Суть проблемы в том, что нужно контролировать формы на вводимый бред. Если нужно разрешить вводить только цифры, то тут просто регуляркой режу все ненужное: 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, время: 07:33. |