Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Переделать регулярные выражения

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
vanicon
Отправлено: 26 Июля, 2013 - 20:56:34
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Есть 2 регулярных выражения, с помощью первого нужно в тексте у ссылок убрать все лишнее, оставить тока домен и зону, а вторым проверить на валидность.
На сервере я работаю с этими выражениями все работает, а на клиенте не хочет, читал что в регулярках на javascript есть свои особенности.
1 выражение
CODE (htmlphp):
скопировать код в буфер обмена
  1. /(https?:\/\/)?((www\.)?(([-а-яa-zёЁцушщхъфырэчстью0-9_\.]{2,}\.)(рф|[a-z]{2,6}))((\/[-а-яёЁцушщхъфырэчстьюa-z0-9_]{1,})?\/?([a-z0-9_-]{2,}\.[a-z]{2,6})?(\?[a-z0-9_]{2,}=[-0-9]{1,})?((\&[a-z0-9_]{2,}=[-0-9]{1,}){1,})?+)([\/](.)*))/iu

2 выражение
CODE (htmlphp):
скопировать код в буфер обмена
  1. /^[\.a-z0-9а-я0-9ёЁ_-\s]*$/iu

Ребят помогите мне переделать эти регулярки, что бы на клиенте работали, а то с регулярками у меня беда...


-----
Так было, так есть и так будет
 
 Top
armancho7777777 Супермодератор
Отправлено: 26 Июля, 2013 - 21:05:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




vanicon, покажите примеры ссылок которые должны и которые не должны пройти валидацию.
 
 Top
DeepVarvar Супермодератор
Отправлено: 26 Июля, 2013 - 21:27:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Зачем это все? Оно будет работать так (только сам файл js тоже должен быть в утф-8).
Коротенькая точно вот так сработает:
CODE (javascript):
скопировать код в буфер обмена
  1. if (str.match(new RegExp(/^[\.a-z0-9а-я0-9ёЁ_-\s]*$/i))) { ...

С длинной не уверен, но тоже через объект regExp сработает после доработок.
 
 Top
EuGen Администратор
Отправлено: 26 Июля, 2013 - 21:31:15
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




vanicon
Могу ещё посоветовать regexpal[dot]com - быстро освоитесь с regex в javascript. Ну и - как писали выше - нужны примеры того, что проходит/не проходит валидацию, тогда как не должно проходить/проходит соответственно.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vanicon
Отправлено: 27 Июля, 2013 - 04:59:21
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Да первое регулярное выражение заработало, но вот 2, пишет в консоле не валидная регулярное выражение.
Мне нужно посчитать кол-во символов в тексте, но ссылки целиком не нужно считать, а считать только доменное имя и зону, то есть если посчитать кол-во символов в url на эту тему, то должно получится 19 (вместе с http)


-----
Так было, так есть и так будет
 
 Top
vanicon
Отправлено: 28 Июля, 2013 - 16:33:00
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Дабы не создавать новой темы, есть регулярное выражение, с помощью которого возвращается массив, то есть если текст будет таким:
"бла бла #Word1 бла #Word2", то должен вернуться массив со словами word1 и word2, написал регулярку, но возвращает тока 1 слово, вот регулярка:
CODE (htmlphp):
скопировать код в буфер обмена
  1. /\s\B\#[a-zа-я0-9]{1,30}+\s/iu

Всегда у меня с регулярками проблема, все руки до них никак не доходят...


-----
Так было, так есть и так будет
 
 Top
DeepVarvar Супермодератор
Отправлено: 28 Июля, 2013 - 16:48:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




/#[a-zа-я0-9]+/ig
 
 Top
EuGen Администратор
Отправлено: 28 Июля, 2013 - 16:56:31
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




DeepVarvar
vanicon пишет:
{1,30}

Тогда точнее
/#[A-Za-zА-Яа-я0-9ёЁ]{1,30}/g


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DeepVarvar Супермодератор
Отправлено: 28 Июля, 2013 - 17:17:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Думаю что уточнять кол-во букв нет смысла, т.к. оно либо найдет, либо споткнется на пробеле, ну т.е. конечная и полностью верная к задаче будет такая:

/#([A-Za-zА-Яа-я0-9ёЁ]+)\s+/g
 
 Top
EuGen Администратор
Отправлено: 28 Июля, 2013 - 17:24:03
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




DeepVarvar
Не совсем так. Если указать {1,30} - то туда не попадут строки длиной 31 и более, если указать +, то - да, как только "споткнётся" на пробеле - вернее, на любом символе не из группы (то есть при длине 31 и более всё равно будут вхождения в результат). Поскольку автор вопроса изначально указал {1,30}, то, думаю, это ограничение есть условие задачи.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB