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
Форумы портала PHP.SU :: Версия для печати :: Переделать регулярные выражения
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Переделать регулярные выражения

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

1. vanicon - 26 Июля, 2013 - 20:56:34 - перейти к сообщению
Есть 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

Ребят помогите мне переделать эти регулярки, что бы на клиенте работали, а то с регулярками у меня беда...
2. armancho7777777 - 26 Июля, 2013 - 21:05:45 - перейти к сообщению
vanicon, покажите примеры ссылок которые должны и которые не должны пройти валидацию.
3. DeepVarvar - 26 Июля, 2013 - 21:27:53 - перейти к сообщению
Зачем это все? Оно будет работать так (только сам файл js тоже должен быть в утф-8).
Коротенькая точно вот так сработает:
CODE (javascript):
скопировать код в буфер обмена
  1. if (str.match(new RegExp(/^[\.a-z0-9а-я0-9ёЁ_-\s]*$/i))) { ...

С длинной не уверен, но тоже через объект regExp сработает после доработок.
4. EuGen - 26 Июля, 2013 - 21:31:15 - перейти к сообщению
vanicon
Могу ещё посоветовать regexpal[dot]com - быстро освоитесь с regex в javascript. Ну и - как писали выше - нужны примеры того, что проходит/не проходит валидацию, тогда как не должно проходить/проходит соответственно.
5. vanicon - 27 Июля, 2013 - 04:59:21 - перейти к сообщению
Да первое регулярное выражение заработало, но вот 2, пишет в консоле не валидная регулярное выражение.
Мне нужно посчитать кол-во символов в тексте, но ссылки целиком не нужно считать, а считать только доменное имя и зону, то есть если посчитать кол-во символов в url на эту тему, то должно получится 19 (вместе с http)
6. vanicon - 28 Июля, 2013 - 16:33:00 - перейти к сообщению
Дабы не создавать новой темы, есть регулярное выражение, с помощью которого возвращается массив, то есть если текст будет таким:
"бла бла #Word1 бла #Word2", то должен вернуться массив со словами word1 и word2, написал регулярку, но возвращает тока 1 слово, вот регулярка:
CODE (htmlphp):
скопировать код в буфер обмена
  1. /\s\B\#[a-zа-я0-9]{1,30}+\s/iu

Всегда у меня с регулярками проблема, все руки до них никак не доходят...
7. DeepVarvar - 28 Июля, 2013 - 16:48:46 - перейти к сообщению
/#[a-zа-я0-9]+/ig
8. EuGen - 28 Июля, 2013 - 16:56:31 - перейти к сообщению
DeepVarvar
vanicon пишет:
{1,30}

Тогда точнее
/#[A-Za-zА-Яа-я0-9ёЁ]{1,30}/g
9. DeepVarvar - 28 Июля, 2013 - 17:17:41 - перейти к сообщению
Думаю что уточнять кол-во букв нет смысла, т.к. оно либо найдет, либо споткнется на пробеле, ну т.е. конечная и полностью верная к задаче будет такая:

/#([A-Za-zА-Яа-я0-9ёЁ]+)\s+/g
10. EuGen - 28 Июля, 2013 - 17:24:03 - перейти к сообщению
DeepVarvar
Не совсем так. Если указать {1,30} - то туда не попадут строки длиной 31 и более, если указать +, то - да, как только "споткнётся" на пробеле - вернее, на любом символе не из группы (то есть при длине 31 и более всё равно будут вхождения в результат). Поскольку автор вопроса изначально указал {1,30}, то, думаю, это ограничение есть условие задачи.

 

Powered by ExBB FM 1.0 RC1