Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка электронной почты на JavaScriptе
 
 автор: Lelik   (11.03.2011 в 16:03)   письмо автору
 
 

Здрасьте всем

Столкнулся с проблемой: взял регулярное выражение для проверки правильности ввода эл. почты написанное ув. студией Софттайм. На пхп отрабатывает корректно, а вот на жабаскрипте не очень.


var oFilter = new RegExp('^[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$','i');

if( oFilter.test(sEmail) ) {
    
}


применяю его как показано в коде выше, но почему-то одинаково обрабатываются эл. адреса таких видов:

email@site.ru
email@site


Что я не правильно делаю, что корректными показываются адреса без точки в доменном имени?

  Ответить  
 
 автор: cheops   (11.03.2011 в 16:16)   письмо автору
 
   для: Lelik   (11.03.2011 в 16:03)
 

Белебирдистика со слешами, нужно экранировать экранирующий слеш, в общем если перед точкой добавите 2 слеша - она будет экранирована, если один - его сжует JavaScript и до регулярного выражения ничего не дойдет.
var oFilter = new RegExp('^[-0-9a-z_.]+@[-0-9a-z]+\\.[a-z]{2,6}$','i');

  Ответить  
 
 автор: Lelik   (11.03.2011 в 16:21)   письмо автору
 
   для: cheops   (11.03.2011 в 16:16)
 

А слеши, которые в квадратных скобках, они нужны или там без них всё как надо обработает скрипт? :)

  Ответить  
 
 автор: cheops   (11.03.2011 в 16:23)   письмо автору
 
   для: Lelik   (11.03.2011 в 16:21)
 

Они там избыточны, т.е. с ними тоже будет работать, но и без них ничего страшного не случится.

  Ответить  
 
 автор: Lelik   (11.03.2011 в 16:24)   письмо автору
 
   для: cheops   (11.03.2011 в 16:23)
 

Т. е. в моём случае правильно будет так:

new RegExp('^[-0-9a-z_.]+@[-0-9a-z_^.]+\\.[a-z]{2,6}$','i');

  Ответить  
 
 автор: Lelik   (11.03.2011 в 16:29)   письмо автору
 
   для: cheops   (11.03.2011 в 16:23)
 

Спасибо вам огромное :)

  Ответить  
 
 автор: kosta_in_net   (11.03.2011 в 17:00)   письмо автору
 
   для: cheops   (11.03.2011 в 16:16)
 

что-то вы меня озадачили с двойным слешем. У меня так:
if(document.frm.mail.value.search(/([0-9a-zA-Z\.-_]+)@([0-9a-zA-Z\.-_]+)\.[a-zA-Z]{2,}\s*$/) < 0)
работает с одинарным

  Ответить  
 
 автор: cheops   (11.03.2011 в 17:01)   письмо автору
 
   для: kosta_in_net   (11.03.2011 в 17:00)
 

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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования