Помощник
|
Регулярные Выражения |
tro9an
|
Сообщение
#1
|
||
|
|
||
|
|||
ZiTosS |
11.10.2010, 22:23;
Ответить: ZiTosS
Сообщение
#2
|
|
tro9an,
/^[a-zZ-A0-9]{3,}+$/ [a-zZ-A0-9] - лучше использовать флаги, чем писать a-zA-Z. Флаг регистронезависимости - i. Так же у вас не правильная запись последовательности символов. Z-A не будет работать вроде, обязательно надо A-Z {3,}+ Масло масленое. {3,} - 3 и более + - один и более Правильная регулярка: /^[a-z0-9]{3,}$/i Кстати, у вас в логине нельзя использовать _ и др. символы По поводу второй регулярки: /^[a-zZ-A0-9]+@[-a-z0-9]+(.[-a-z0-9])*.[a-z]+$/ Явно работать не будет. Почитайте про спецсимволы и их экранировку. Я бы записал так: /^[-_a-z0-9\.]+@[-a-z0-9]+(\.[-a-z0-9])*\.[a-z]+$/i Замечание! Как только появится(если ещё не появилась) почта с рускоязычными доменами, данный пример работать не будет. Реальные регулярки нужно составлять по RFC к email. Да и всё равно валидацию email можно провести только частично, всё равно возможно левое заполнение. |
|
|
tro9an
|
Сообщение
#3
|
|
ZiTosS, в конце каждой регулярки вы ставили /i, что это значит?
|
|
|
gaaarfild |
12.10.2010, 16:22;
Ответить: gaaarfild
Сообщение
#4
|
|
Это значит, что поиск регистронезависимый.
|
|
|
tro9an
|
Сообщение
#5
|
|
1. проверка даты типа дд-мм-гггг
/^\d{2,2}([.-/])+\d{2,2}([.-/])+\d{4,4}$/i не работает, чё я тут неправильно написал? 2.Как сделать точную проверку даты и месяца веди день-39 или например 77, вполне пропустит(тоже самое с месяцом) З.Ы и если добавите новые символы то поясните их пожалуйста |
|
|
ZiTosS |
19.10.2010, 21:52;
Ответить: ZiTosS
Сообщение
#6
|
|
tro9an, сейчас разберемся, вот рабочий пример. Попробуйте сначала сами найти отличия.
[php]<?php $date = "01-01-2010"; // так же прокатят 01.01.2010 01/01/2010 01012010 preg_match('/^(\d{2})[.\-\/]?(\d{2})[.\-\/]?(\d{4})$/i', $date, $match); print_r($match); ?>[/php] 1) Скобки нужны для выделения карманов, которые помещаются в $match. Зачем вам в карманы разделители? Поэтому скобками окружил в шаблоне день, месяц и год. С разделителей скобки убрал. 2) Заменил {n,n} на {n} это тоже самое 3) Не забываем экранировать спецсимволы: 3.1) Хоть "/" и не является спецсимволом, но в данном примере мы используем, как символ начала и конца шаблона -> спецсимвол, его нужно экранировать, если он используется в шаблоне, что я и сделал "\/" 3.2) Символ "-" является спецсимволом, когда его используют в маске выбора [...] не первым символом, поэтому его тоже экранировали "\-" 3.3) Символ "." в шаблонах так же является спецсимволом, но как я понял, его не обязательно экранировать в маске выбора, компилятор сам понимает, что в данном случае точка выступает как обычный символ шаблона. 4) У вас в шаблоне использовался "+"(1 или много повторений), я заменил его на "?"(0 или 1 повторений), думаю объяснять не нужно, что раньше бы пролезала бы и дата 01--01---2010, 01./-01-/.2010 и подобные другие. Проверку теперь можете сделать по $match: [php]$day = intval($match[1]); // день $month = intval($match[2]); // месяц $year = intval($match[3]); // год[/php] Кстати, у вас не пройдут даты 01.01.10, 1.1.2010, 1.1.10 и подобные |
|
|
Banderas |
8.1.2011, 1:07;
Ответить: Banderas
Сообщение
#7
|
|
Мне нужно разбить строку
23:44:53 3rd || Слоболян Богдан Владимирович || Banderas123@yandex.ru || Кое что, например о Панкратионе. Это тема!!! по частям, которые отделены || Я использую функцию split() [php]$farr = file("$D_ROOT/../www/orders/feedback.txt"); echo '<pre>'; print_r($farr[0]); echo '</pre>'; $end[] = split("\|{2}", $farr[0]); # или "\|\|" foreach ($end as $key => $value) echo $value.'<br>';[/php] У меня выскакивает ошибка. Deprecated: Function split() is deprecated in Z:\home\test1.ru\www\view_fb.php on line 19 Также пробовал функцию preg_match() preg_match("/^[а-яa-z0-9:]+/i", $farr[0], $end); В чем ошибка? Я нифига не понял в регулярных выражениях, да? (( |
|
|
Banderas |
8.1.2011, 4:06;
Ответить: Banderas
Сообщение
#8
|
|
Хах!!! УРА!!! я сделал это!!! вуху!!!
[php]for ($i=0;$i<count($farr);$i++) { $end = preg_split("/[||]/", $farr[$i]); foreach ($end as $key => $value) echo nl2br($value); }[/php] как же приятно |
|
|
sc2r2bey |
8.1.2011, 11:38;
Ответить: sc2r2bey
Сообщение
#9
|
|
Banderas, а не проще explode использовать, не всю же жизнь трусы через голову одевать ;) ?
-------------------- программирую web и для we |
|
|
Banderas |
8.1.2011, 12:15;
Ответить: Banderas
Сообщение
#10
|
|
surfer, можно конечно, но очень хотелось попробовать регулярные выражения
Кстати, возник вопрос! [php]<table border='0' cellpadding='10'> <tr align=center bgcolor='#e7e7e7'> <td>Дата</td> <td>Инициалы</td> <td>e-mail</td> <td>Сообщение</td> </tr> <?php for ($i=0;$i<count($farr);$i++) { $end = preg_split("/[||]/", $farr[$i]); echo '<tr>'; for ($j=0;$j<count($end);$j++) { echo '<td>'.$end[$j].'</td>'; $j += 1; } echo '</tr>'; }[/php] При выполнение данного кода, парсер заполняет массив $end вот так Array ( [0] => 22:03:55 7th [1] => [2] => Вольский Владислав Сергеевич [3] => [4] => cockt@mail.ru [5] => [6] => Кое какой текст для проверки функции mail() ) это конечно не проблема, но хотелось бы удалить пустые ненужные элементы и перезаписать ключи по порядку. Можете подсказать алгоритм? пс. вот с explode() [php]foreach ($farr as $key => $value) { $good = explode('||', $value); echo '<tr>'; foreach ($good as $k => $v) echo '<td>'.$v.'</td>'; echo '</tr>'; }[/php] |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
База профилей+топики для Xrumer 12, регулярные обновления, скидки, бонусы. | 98 | xrumermaster | 48709 | 15.9.2019, 0:47 автор: -xrumer-master- |
|
База профилей+топики+гостевые+рефспам для Xrumer 12.ххх, регулярные обновления | 50 | xrumer-master | 12703 | 15.9.2019, 0:00 автор: xrumer-master |
|
Нужны рерайтеры. Простые и регулярные заказы. Оплата 30-35 рублей / 1000 символов б.п. |
3 | 13sanek | 1911 | 9.5.2017, 12:26 автор: Gadraser |
Текстовая версия | Сейчас: 28.3.2024, 14:54 |