Javascript очень сложное регулярное выражение

12
rtyug
На сайте с 13.05.2009
Offline
263
#11

Уважаемые, подскажите по поводу реглярок в javascript, это какой-то крик души

есть регулярное выражение для замены ip:

 html = html.replace(/(((([0-9A-Fa-f]{1,4}:){7}(([0-9A-Fa-f]{1,4})|:))|(([0-9A-Fa-f]{1,4}:){6}(:|((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})|(:[0-9A-Fa-f]{1,4})))|(([0-9A-Fa-f]{1,4}:){5}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){0,1}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){0,2}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){0,3}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:)(:[0-9A-Fa-f]{1,4}){0,4}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(:(:[0-9A-Fa-f]{1,4}){0,5}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})))(%.+)?)/ig, 

задача:

сделать исключение чтобы если в начале ip-адреса стоит символ / или в конце ip-адреса, то чтобы замена не осуществлялась

я написал так:

html = html.replace(/[^/]

но это не работает хоть убей

подскажите как это сделать?

т.е. вопрос как использовать исключение?? чтобы исключить шаблон с /

Спалил тему: Pokerstars вывод WMZ, etc на VISA 0% или SWIFT + Конверт USD/GBP,etc (net profit $0,5 млрд) (https://minfin.com.ua/blogs/94589307/115366/) Monobank - 50₴ на счет при рег. тут (https://clck.ru/DLX4r) | Номер SIP АТС Москва 7(495) - 0Ꝑ, 8(800) - 800Ꝑ/0Ꝑ (http://goo.gl/XOrCSn)
siv1987
На сайте с 02.04.2009
Offline
427
#12

rtyug, а экранировать слеш не пробовали?

/[^\/]?РЕГУЛЯРКА[^\/]?/

ПС. а регулярка жесть. Сам составлял?

vertuhay2
На сайте с 31.03.2013
Offline
64
#13

ТС сори что влезаю.

А подскажите как заменить весь текст между,

например

<script>
$(function(){
menu_state = $.cookie("sumbenu");
if (menu_state!='hidden') {
toggleSubMenu();
}
});
</script>

нашел такое но оно выделает все

<script>([\D\d\s]+)</script>

скачать игры на пк (https://gig-games.net/) | скачать на телефон (https://gg33.top) | скачать торрент (https://torrent-film.monna.top/)
siv1987
На сайте с 02.04.2009
Offline
427
#14

<script>([\s\S]+?)</script>

rtyug
На сайте с 13.05.2009
Offline
263
#15
siv1987:

rtyug, а экранировать слеш не пробовали?
/[^\/]?РЕГУЛЯРКА[^\/]?/

спасибо, да, запутался

siv1987:

ПС. а регулярка жесть. Сам составлял?

нет, взял готовую, ругулярка ищет по ip6 и ip4

по ip6 регулярки очень сложные, по этому я решил взять готовую, и у меня бы опыта не хватило бы написать по ip6 такую регулярку :)

у меня еще есть вопрос, не могу понять, есть условие:

"ыыыыыыыыыыы WWW ы ъъъъъъ FFF"

ыыыыыыыыыыы - это 12 символов русских любых

WWW - это любые латинские символы в любом количестве

ъъъъъъ - 6 символов русских любых

FFF - это любые латинские символы в любом количестве

я написал регулярку, которая работает для WWW:

 html = html.replace(/[^\/"']{12}\s([\w]+)/ig, 

но я пишу дальше ее продолжение:

 html = html.replace(/[^\/"']{12}\s[\w]+\s\w\s[^\/"']{8}\s([\w]+)/ig, 

она почему-то не работает

к предыдущей регулярке которая работает к WWW, я добавил символ пробела

  html = html.replace(/[^\/"']{12}\s([\w]+)\s/ig, 

и она перестала работать? почему? как тут из-за \s могло переставить работать?? (символ пробела там стоит исходя их условия)

у меня вариантов нету, странности какие-то происходят :) 😕😕😕😕

---------- Добавлено 23.05.2013 в 13:23 ----------

кажется разобрался :)

html = html.replace(/([^\/"']{12}\s)([\w]+)([^\/"']{10}\s)([a-zA-Z_]+)/ig,

дани мапов
На сайте с 06.09.2012
Offline
204
#16

Неплохой сервис для теста - http://regexpal.com/

Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
rtyug
На сайте с 13.05.2009
Offline
263
#17

подскажи почему такое регулрное выражение:

html = html.replace(/([^\/"']{12}\s)([^\/"']+)(\s([^\/"']{1}\s[^\/"']{7}\s)([-a-z0-9_]{2,32})/ig,

не удовлетворяет сроку:

"ыыыыыыыыыыы WWW ы ъъъъъъ FFF"

?

ыыыыыыыыыыы - это 12 символов русских любых

WWW - это любые символы в любом количестве

ъъъъъъ - 6 символов русских любых

ы - руский смивол

FFF - это любые латинские символы в любом количестве

---------- Добавлено 23.05.2013 в 20:38 ----------

дани мапов:
Неплохой сервис для теста - http://regexpal.com/

как им пользоватся?

---------- Добавлено 23.05.2013 в 20:44 ----------

кажется разобрался

html = html.replace(/([^\/"']{12}\s)([^\/"'<>]+\s)[^\/"']{1}\s([^\/"']{7}\s)([-a-z0-9_]{2,32})/ig,

vertuhay2
На сайте с 31.03.2013
Offline
64
#18
siv1987:
<script>([\s\S]+?)</script>

От спс добрый человек!

дани мапов
На сайте с 06.09.2012
Offline
204
#19
rtyug:


дани мапов:
Неплохой сервис для теста - http://regexpal.com/


как им пользоватся?

В верхнем поле вводите регулярку, в нижнем поле текст. Часть текста, попадающая под регулярное выражение, будет "на лету" подсвечиваться, очень удобно.

rtyug
На сайте с 13.05.2009
Offline
263
#20
siv1987:
Ну тогда
/(^|\s)([\w]+\.[\w]{2,6})\b/ig

Спасибо

я ломаю голову почему и как не хочет эта регулярка обрабатывать русский домен, например



1. сеосерч.ру

(без www и без http)

я пробовал:

/(^|\s)([\w]+\.[^\/"'<>0-9\s]{2,6})\b/

и так:

(^|\s)([^\/"'\s]{0,61}\.[^\/"'<>0-9\s]{2,6})

получается что такая регулярка, в любом случае портит другой текст и другие ссылки в тексте

подскажите, пожалуйста, как можно регулряку оптимизировать чтобы она не портила текст и ссылки?

может я регулярку не так делаю?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий