我想使用此正则表达式来验证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
标志: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
这是Regex PCRE风格的标志。请参阅PHP.net手册页上的注释:
http://php.net/manual/en/reference.pcre.pattern.modifiers.php(在代码示例下)
D(PCRE_DOLLAR_ENDONLY)-如果设置了此修饰符,则模式中的美元元字符仅在主题字符串的末尾匹配。如果没有此修饰符,则如果美元是换行符,则美元也会紧接在最后一个字符之前匹配(但不匹配其他任何换行符)。如果设置了m修饰符,则忽略该修饰符。在Perl中没有与此修饰符等效的东西。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句