Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2010, 23:17   #1
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию Регулярные выражения

Не работают регулярные выражения, ничего не выдаёт вообще на экран, верно и неверно не выдаёт.

Код:
<html>
<head>
<script type="text/javascript">
function f() {
var a=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
var inp = document.getElementById('inp');
var verno = document.getElementById('verno');
var neverno = document.getElementById('neverno');

if(inp.value.search(a)! == - 1) {
verno.style.display = 'inline';
neverno.style.display = 'none';
document.forms[0].submit();
}
else
{
 neverno.style.display = 'inline';
 verno.style.display = 'none';
}

</script>

</head>
<body>
<input type='text' id='inp'>
<div style='display:none; color:#00FF00' id='verno'>Верно</div>
<div style='display:none; color:red' id='neverno'>Неверно</div>
<input type='button' value='Отправить' onclick='f()'>


</body>
</html>

Последний раз редактировалось Syltan; 23.04.2010 в 23:32.
Syltan вне форума Ответить с цитированием
Старый 24.04.2010, 00:47   #2
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

Исправил ,сработало, вроде всё понятно, кроме вот этого, если кто может расшифруйте его.
Код:
var a=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
Syltan вне форума Ответить с цитированием
Старый 24.04.2010, 14:59   #3
Vertexxx
Заблокирован
 
Регистрация: 10.04.2010
Сообщений: 145
По умолчанию

^ - якорный символ начала строки
\w+ - за которым следует один или более печатаемый символ (эквивалентно классу [A-Za-z0-9_])
([\.-]?\w+)* - за которым следует или не следует точка или дефис, после которых следует один или более печатаемый символ. Группа повторяется ноль или более раз.
@\w+([\.-]?\w+)* - далее следует собака, за которой следует один или более л.п.с., за которыми следует 0 или более раз группа, в которой может быть точка или дефис, за которой следует хотя бы один л.п.с.
(\.\w{2,4})+ - далее следует 1 или более раз группа. в которой есть точка, после которой следует л.п.с. в количестве от двух до четырех штук.
$ - якорный символ конца строки.


А теперь вопросы

1. В сохраняющие скобки взято намеренно или случайно? Просто хотелось объединить в группу или еще и запомнить?
Если просто ради группы, то можно использовать несохраняющие скобки (?: смысл регвыра от этого не изменится, но совпадение части, находящейся в скобках, не будет сохранено.
То есть регвыр преобразуется вот в такой:
var a=/^\w+(?:[\.-]?\w+)*@\w+(?:[\.-]?\w+)*(?:\.\w{2,4})+$/;

2. В конце выражения я бы написал не от двух до четырех символов, а от двух до шести. Мало ли у кого почта от домена первого уровня museum

Последний раз редактировалось Vertexxx; 24.04.2010 в 15:26.
Vertexxx вне форума Ответить с цитированием
Старый 24.04.2010, 23:08   #4
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

Спс. Наконец-то опнял эти регулярные,после 4 просомтра видео, правда ещё пока не применял, это по видеоуроку смотрел.
Syltan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения adwaer Общие вопросы .NET 4 24.02.2010 17:38
Регулярные выражения ACE Valery PHP 5 14.10.2009 11:37
регулярные выражения wyvern PHP 3 09.04.2009 22:15
Регулярные выражения Adamant Общие вопросы C/C++ 1 26.11.2007 19:44