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 :: Удаление лишних символов
value = value.replace(/\s*([\.\!]){3,}\s*/g,"$1$1$1 ");
value = value.replace(/\s*([\.\!]){2}\s*/g,"$1$1 ");
если в строке введено "слово1 ....... слово2", делаем так "слово1... слово2", если же "слово1..слово2", то "слово1. слово2"
Короче говоря, если введено более 3 символов, то режем до трех, если 2, то оставляем только один. С тремя и более все нормально, а вот когда добавляю проверку на 2 символа получаю что-то типа этого: "слово!! ! слово"
Как правильно составить регулярку для моей цели?
Да и еще, возможно ли с помощью регулярок менять регистр букв? Пример, есть строка "слово раз. слово два", нужно заменить на "слово раз. Слово два"
----- Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
Uchkuma
Отправлено: 23 Августа, 2010 - 18:05:19
Участник
Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010 Откуда: Киров
Помог: 6 раз(а)
Саныч пишет:
Как правильно составить регулярку для моей цели?
Вот так, я думаю, будет правильно:
Цитата:
(?<![.!])([.!]){2}(?![.!])
и в качестве замены выставить ссылку $1 и все! (Добавление)
Саныч пишет:
Да и еще, возможно ли с помощью регулярок менять регистр букв?
На javascript не знаю, а на php разве что preg_replace_callback().
Саныч
Отправлено: 23 Августа, 2010 - 18:22:42
Участник
Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010 Откуда: Украина, Запорожье
Помог: 62 раз(а)
Uchkuma пишет:
Вот так, я думаю, будет правильно
Все таки неправильно. Вот этот кусок "(?<![.!])" вызывает ошибку, я так понимаю из-за символа "<". Вот эта часть "(?![.!])" тоже не помогает, я пробовал так прописывать еще до того, как задал вопрос...
Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010 Откуда: Украина, Запорожье
Помог: 62 раз(а)
Uchkuma пишет:
Эта часть должна работать. Смотреть тут.
Ну эта ссылка для меня не нова
То что часть должна работать это я понимаю, поэтому и пробовал ее раньше подставлять. Ведь по логике все правильно, если после двух точек нет еще одной, то заменяем... Вроде бы все правильно, но... не работает
----- Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
Uchkuma
Отправлено: 23 Августа, 2010 - 19:52:51
Участник
Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010 Откуда: Киров
Помог: 6 раз(а)
Ну раз нету просмотра назад, можно так попробовать:
Цитата:
([^.!])([.!]){2}(?![.!])
Тогда замена должна быть на $1$2.
Саныч
Отправлено: 23 Августа, 2010 - 20:00:49
Участник
Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010 Откуда: Украина, Запорожье
Помог: 62 раз(а)
Нет этот тоже не то. При такой регулярке строку "слово!!!" режет до "слово!!"...
Ну я впринципе придумал как это можно реализовать, завтра на свежую голову попробую...
----- Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
Uchkuma
Отправлено: 23 Августа, 2010 - 20:14:15
Участник
Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010 Откуда: Киров
Помог: 6 раз(а)
Саныч пишет:
При такой регулярке строку "слово!!!" режет до "слово!!"
Да быть такого не может. Или я ничего не понимаю в регулярках.
Может точки экранировать? Хотя внутри символьного класса этого делать не обязательно. Хотя это же javascript, может еще какие заморочки есть в отличие от php.
Саныч
Отправлено: 23 Августа, 2010 - 20:19:23
Участник
Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010 Откуда: Украина, Запорожье
Помог: 62 раз(а)
Uchkuma пишет:
Может точки экранировать?
когда проверял у себя, заекранировал, результат описал выше...
я вобще символы всегда экранирую, чтобы наверняка, привык так уже...
----- Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
JustUserR
Отправлено: 24 Августа, 2010 - 14:48:37
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Саныч пишет:
Да и еще, возможно ли с помощью регулярок менять регистр букв?
В JS-скриптах все строковые объекты имеются значительное число методов для реализации различной функциональности - в частности для изменения регистра можно использовать toLowerCase и toUpperCase
Uchkuma пишет:
Это же javascript, может еще какие заморочки есть в отличие от php.
В JS-скрипах работа с регулярными выражениями PCRE является наиболее удобной поскольку максимально приближена к синтаксису из языка Perl который по сути является автором этого стандарта - преимущество заключается в том что регулярнгые выражения образуют не только отдельный базовый класс и но представляют собой спецальный тип константыных выражений - соответственно дополнительный уровень связанный со строковым экранированием в нем не требуеся Кроме того поиск и замена всех шаблонов определяется аналогичной функией - но с использованием исходного модификатора /g
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.