Обсуждение статьи тематического каталога: Регулярные выражения в Javascript (regex javascript web)Ссылка на текст статьи: http://www.opennet.me/base/dev/pcre_javascript.txt.html
Если вы хотите чтобы последний скрипт (про дату рождения) у вас работал нормально,то лучше посмотрите как он написан на источнике "http://www.pcre.ru/docs/javascript/text/intro2/" в конце страницы. Но и там тож вроде ошибка: вместо
"< br>" нужно писать "
" - без пробела после открывающего символа <.
Что тут неправильно: нет явного обращение к элементам массива, т.е. вместо arr надо писать arr[0], arr[1], arr[2], arr[3] - соответственно выводимому значению.
А коментарий этот написал для того, чтобы начинающие изучать JS как я, смогли сразу понять ошибки, возникающие при неправильном описании элементов.
Будьте внимательны (а при случае плюньте автору в лицо): многие вполне корректные адреса e-mail эту проверку не пройдут.
Статья параша, писал дебил малограмотный. Надо юзать прототипы!
Попробуй сам напиши че-нить достойное, умник. А то вон критиков полстраны, а толку ноль целых ноль десятых.
formi v java script
эй, взаимоуважатели, заместо ругаться, не плодите дезинформацию другим детям, а исправляйте:/[0-9a-z_]+@[0-9a-z_^.]+.[a-z]{2,3}/i
этот регексп нерабочий, причем жёстко.
Дайте ему вот это:
Vasiliy.Lokhankin@my.mail-zanzibar.info
он не примет, а мыло корректное.
а это примет:----paraboloid@my.Fu@#$%$%^*mail.com=Wrong@!
просто он зацепится не с начала и не до конца строки, да и точка в регекспе выше в среднем []-блоке позволяет быть любым символам, так что ой.
Где-то так, вобщем:
1. во втором блоке так точка не отрицается (если я правильно понял неправильный ход мыслей... sic!) - а если неправильно - то причём там крышка (^)? Отрицается любой символ? Гы. Даже если бы работала эта конструкция (отрицание со средины регекспа), то... Впрочем, "на этом мысль останавливается".
2. Если убрать точку ("всё подряд") в среднем блоке - матч сработает только на доменах 2го уровня. Да и то на 2-3 буквенных в конце (а где инфо? моби? нейм? етц...) - правда, это достаточно свежий апдейт, но от этого регесп не стаёт рабочим.
3. нет ограничения у регекспа по бокам. То есть он может СОВПАСТЬ внутри строки, которая будет окружена мусором.
4. в емейле в имени может быть точка, и точка!
5. с какой радости подчеркивания пошли в домены, и где дефисы в доменах?
т.е. если исправить эти "сам умею сочинил" в "и я сам умею сочинил-2", то выйдет:
/^[0-9a-z\-\._+]+@(?:[0-9a-z\-]+\.)+[a-z]+$/i
но и достоверность этого сомнительна - в RFC сначала надо прочитать стандарты, чем умничать. Например, формат имени в емейле более широкий, чем у домена - и могут быть ещё разрешённые символы (подчеркивание, плюс, ещё что-то, да и то по разным стандартам по-разному).
Кроме того этот регексп не подтвердит правильность емейлов:
"Василий Квасилий" <kvasil@mail.ru>
хотя оно корректно, и
"MyOldMail:<i@be.there>" <big@but.very.small.com>а вдруг ещё кавычки могут быть вложеные, заслешованые ;-)
так что писать и читать книжечки ещё придётся.
Мудрость, она как и тупость, безгранична - накапливать можно вечно ;).
Автору большое спасибо!
Может что и не так но намного лучше и полней информация чем в некоторых книгах которые читал.
Не нужно критиаовать - нужно советовать и обсуждать.PS как правело критикуют малограмотные зазнайки ;)
И не надо воспринимать.
Помогите выделить из строчек то, что находится
в <param>, а именно value="http://....."
Надо выделить из строчек несколько разных форматов.Делаю:
re = /(.+)<param name="movie" value="(http[^><].+?)">(.+)/g;
r = tub.replace(re, "$2");
if (r.indexOf('http') == 0) {
// что-то делаю
}С первой строкой справляется, а со второй (от вестей) не получается.
А вот строчки:
//<object width="445" height="364"><param name="movie" value="http://www.youtube.com/v/-SRpkznlTH4&hl=ru&fs=1&rel=0&border... name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/-SRpkznlTH4&hl=ru&fs=1&rel=0&border... type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="445" height="364"></embed></object>//vesti.ru
//<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swfl...,0,29,0" width="408" height="356" id="flvplayer" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="movie" value="http://www.vesti.ru/i/flvplayer.swf?vid=243382&autostart=fal... /><param name="quality" value="high" /><param name="wmode" value="transparent" /><param name="devicefont" value="true" /><param name="bgcolor" value="#000000" /><param name="vid" value="243382" /><embed src="http://www.vesti.ru/i/flvplayer.swf?vid=243382&autostart=fal... quality="high" devicefont="true" bgcolor="#000000" width="408" height="356" name="flvplayer" align="middle" allowScriptAccess="always" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>
Помогите выделить из строчек то, что находится
в <param>, а именно value="http://....."
Надо выделить из строчек несколько разных форматов.Делаю:
re = /(.+)<param name="movie" value="(http[^><].+?)">(.+)/g;
r = tub.replace(re, "$2");
if (r.indexOf('http') == 0) {
// что-то делаю
}С первой строкой справляется, а со второй (от вестей) не получается.
А вот строчки:
//<object width="445" height="364"><param name="movie" value="http://www.youtube.com/v/-SRpkznlTH4&hl=ru&fs=1&rel=0&border... name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/-SRpkznlTH4&hl=ru&fs=1&rel=0&border... type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="445" height="364"></embed></object>//vesti.ru
//<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swfl...,0,29,0" width="408" height="356" id="flvplayer" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="movie" value="http://www.vesti.ru/i/flvplayer.swf?vid=243382&autostart=fal... /><param name="quality" value="high" /><param name="wmode" value="transparent" /><param name="devicefont" value="true" /><param name="bgcolor" value="#000000" /><param name="vid" value="243382" /><embed src="http://www.vesti.ru/i/flvplayer.swf?vid=243382&autostart=fal... quality="high" devicefont="true" bgcolor="#000000" width="408" height="356" name="flvplayer" align="middle" allowScriptAccess="always" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>
ошибка в "К примеру, для проверки правильности ввода e-mail,
регулярное выражение, что для JavaScript, что для PHP будет выглядеть
одинаково /[0-9a-z_]+@[0-9a-z_^.]+.[a-z]{2,3}/i.".[a-z]{2,3} - точка соотевтсвует любому символу, надо писать \.
ну и многие корректные адреса не пройдут. К примеру можно использовать точки в имени например: log.in@почта.info