Я бы хотел использовать это регулярное выражение для проверки IPv6, но я хочу понять все, что он делает qaru.site/info/19824/...
^(?>(?>([a-f0-9]{1,4})(?>:(?1)){7}|(?!(?:.*[a-f0-9](?>:|$)){8,})((?1)(?>:(?1)){0,6})?::(?2)?)|(?>(?>(?1)(?>:(?1)){5}:|(?!(?:.*[a-f0-9]:){6,})(?3)?::(?>((?1)(?>:(?1)){0,4}):)?)?(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(?>\.(?4)){3}))$/iD
но я не знаю, что делает этот флаг в конце: /iD
. Я знаю, что флаг /i
означает игнорировать регистр, но я не могу найти, что D
делает где угодно. Этот ответ был одобрен многими, некоторые из них я предполагаю, что он действителен, но в этом сообщении говорится, что флаг D
отсутствует: qaru.site/info/20009/...
Я пытаюсь использовать это в PL/SQL
, и он не вализует правильную строку правильно:
if ( REGEXP_LIKE(v,'/^(?>(?>([a-f0-9]{1,4})(?>:(?1)){7}|(?!(?:.*[a-f0-9](?>:|$)){8,})((?1)(?>:(?1)){0,6})?::(?2)?)|(?>(?>(?1)(?>:(?1)){5}:|(?!(?:.*[a-f0-9]:){6,})(?3)?::(?>((?1)(?>:(?1)){0,4}):)?)?(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(?>\.(?4)){3}))$/iD') ) then