- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
День добрый!
Выводится ошибка: Uncaught TypeError: strToTest.match is not a function
Что я делаю не так?
<!DOCTYPE html>
<html>
<head>
<title>Использование повтора в регулярных выражениях</title>
</head>
<body>
<script type="text/javascript">
function bTestPostalCode( strToTest ) {
if ( strToTest == null || strToTest.length == 0 ) { return false; }
return( strToTest.match( /^\d{5}(-\d{4})?$/ ) != null );
}
</script>
<input type="text" name="Text2" id="anStr">
<input type="button" name="Button" value="Test"
onclick="alert( bTestPostalCode( document.getElementById('anStr') ) )">
</body>
</html>
Видимо document.getElementById('anStr') , который передается аргументом strToTest в функцию не строка.
Попробуйте document.getElementById('anStr').value , может получится ☝
Видимо document.getElementById('anStr') , который передается аргументом strToTest в функцию не строка.
Попробуйте document.getElementById('anStr').value , может получится ☝
Спасибо за ответ, но не помогло )
Не верю (с) д.б. алерт тру/нетру в зависимости от ввода :)
ТайпЕррора уже не будет, ибо document.getElementById('anStr').value это стринг. Если, конечно элемент с ид anStr существует.
Не верю (с) д.б. алерт тру/нетру в зависимости от ввода :)
ТайпЕррора уже не будет, ибо document.getElementById('anStr').value это стринг. Если, конечно элемент с ид anStr существует.
Ну я не вру ))
Функция 'когда ввожу' постоянно возвращает false, хотя по шаблону первые 5 символов это числа )) /^\d{5}(-\d{4})?$/
p.s Кстати вы говорите что не строка, а в шаблоне проверяется на число )) зачем приводить к строке? :D
Речь шла об ошибке тайпЕррор, теперь ее нет.
Никуда ничего не приводится. В изначальном варианте была попытка сравнить с регулярным выражением document.getElementById('anStr') , который есть метод объекта документ со всеми свойствами и методами элемента "анСтр". На что было получено ругательство "TypeError: strToTest.match is not a function". document.getElementById('anStr').value же возвращает строку (или андефинед если анСтр не элемент формы), которую вполне корректно сравнивать с регулярным выражением. Суда по регулярке, тру должно сказать если или ровно 5 цифр в анализируемой строке или строго 5 цифр тире и еще 4 цифры. В любом другом случае нетру. На мой замыленый к текущему часу глаз, именно так должно и быть.
вбей 45454-7545 или 45454 и посмотри на регулярку
ну и document.getElementById('anStr').value, конечно же
А вообще, typeof здорово помогает свести такого рода ошибки к 0. Если, как то так сделать
function bTestPostalCode( strToTest ) {return typeof strToTest == 'string' ?
( strToTest.match( /^\d{5}(-\d{4})?$/ ) ? true : false )
:
0;
}
то получим 0, если не строка и тру/нетру в зависимости от результата теста.