Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.01.2013, 12:46
Интересующийся
Отправить личное сообщение для Quieteroks Посмотреть профиль Найти все сообщения от Quieteroks
 
Регистрация: 18.10.2012
Сообщений: 16

Регулярное выражение с зачисткой
Здравствуйте.

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


Подскажите, куда копать?
Делать карманы и по отдельности каждый карман чистить?
Тогда не будет соблюден формат.
И опять таки, наверно и поиск организуется неверно.
Ответить с цитированием
  #2 (permalink)  
Старый 10.01.2013, 12:50
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Quieteroks
В поле нужно ввести текст в формате XXXX00000,
Приведите несколько реальных входных строк
Ответить с цитированием
  #3 (permalink)  
Старый 10.01.2013, 12:54
Интересующийся
Отправить личное сообщение для Quieteroks Посмотреть профиль Найти все сообщения от Quieteroks
 
Регистрация: 18.10.2012
Сообщений: 16

Deff,

AAAA00057
BBBB00210
ADNB34238

Примерно такие варианты.
Ответить с цитированием
  #4 (permalink)  
Старый 10.01.2013, 13:09
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Quieteroks,
Приведите так же для каждой строки итоговый, "очищенный вид"
Ответить с цитированием
  #5 (permalink)  
Старый 10.01.2013, 13:18
Интересующийся
Отправить личное сообщение для Quieteroks Посмотреть профиль Найти все сообщения от Quieteroks
 
Регистрация: 18.10.2012
Сообщений: 16

Deff,
Так это и есть итог.
А на вход могут завести:
BBB888
DGDK0222

Но это еще ничего страшного.
Главное чтоб некоторые могут вставить русские буквы.
В целом конечно для упрощения можно зарезать все символы, кроме \w\d, но тогда формат и длина не соответствуют.

Вот прям не знаю, как лучше делать.
Ответить с цитированием
  #6 (permalink)  
Старый 10.01.2013, 13:24
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Quieteroks
Подскажите, куда копать?
http://www.books.ru/books/regulyarny...626982/?show=1
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #7 (permalink)  
Старый 10.01.2013, 13:41
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Quieteroks,
Еще раз:
Приведите пару входных "неочищенных" строк и напротив каждой итоговый вид очищенной строки
Ответить с цитированием
  #8 (permalink)  
Старый 10.01.2013, 13:54
Интересующийся
Отправить личное сообщение для Quieteroks Посмотреть профиль Найти все сообщения от Quieteroks
 
Регистрация: 18.10.2012
Сообщений: 16

nerv_,
Ух какая интересная книжка. Обязательно прочитаю.

Deff,
Я даже уже начинаю сомневаться в правильности подхода...
Когда начинаю задумываться, как это организовывать и что должно быть на выходе. Наверно в данном случае буду усложнять/упрощать процедуру.
Проще чистить вводные символы по нажатию кнопки, т.е. запретить кириллицу. Несоответствие формату, регулярка для проверки имеется, можно по итогам заполнения проверить и сообщить об ошибочности действий.

Спасибо за наводящий вопрос.
Ответить с цитированием
  #9 (permalink)  
Старый 10.01.2013, 14:40
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

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

Последний раз редактировалось Deff, 10.01.2013 в 14:47.
Ответить с цитированием
  #10 (permalink)  
Старый 10.01.2013, 18:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от Quieteroks
AAAA00057
BBBB00210
ADNB34238
Вариант...
<!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>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка e-mail регулярное выражение mycoding Общие вопросы Javascript 4 09.02.2017 10:12
Регулярное выражение alerzo Events/DOM/Window 1 17.09.2012 19:20
регулярное выражение martinss jQuery 5 29.07.2011 12:46
Регулярное выражение: любой символ, включая перевод строки Gleb Общие вопросы Javascript 3 28.07.2011 12:15
регулярное выражение theo_ Общие вопросы Javascript 15 21.06.2010 10:29