我想使用这个正则表达式来验证 IPv6,但我想了解它所做的一切https://stackoverflow.com/a/1934546/3112803
^(?>(?>([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
flag: https://stackoverflow.com/a/4415233/3112803
我想用这个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