Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

IPv6 के लिए रेगुलर एक्सप्रेशन (RegEx) IPv4 से अलग है

इस जवाब में @nhahtdh की बहुत मदद से https://stackoverflow.com/a/21943960/3112803 मैंने इसे सबसे अच्छा समाधान होने के लिए तोड़ दिया है। PL/SQL में इसे कैसे करना है इसका एक उदाहरण नीचे दिया गया है , लेकिन इसे अन्य भाषाओं में इस तरह से किया जा सकता है। मैं ColdFusion . में भी ऐसा ही करूँगा . PL/SQL के लिए 512 वर्णों के नीचे रहने के लिए आवश्यक पैटर्न इसलिए इसे तोड़ना बहुत अच्छा काम करता है और इसे समझना आसान है। इसने मेरे सभी परीक्षण मामलों को मूल प्रश्न में पास कर दिया।

if (
    /* IPv6 expanded */
    REGEXP_LIKE(v, '\A[[:xdigit:]]{1,4}(:[[:xdigit:]]{1,4}){7}\z')
    /* IPv6 shorthand */
    OR (NOT REGEXP_LIKE(v, '\A(.*?[[:xdigit:]](:|\z)){8}')
    AND REGEXP_LIKE(v, '\A([[:xdigit:]]{1,4}(:[[:xdigit:]]{1,4}){0,6})?::([[:xdigit:]]{1,4}(:[[:xdigit:]]{1,4}){0,6})?\z'))
    /* IPv6 dotted-quad notation, expanded */
    OR REGEXP_LIKE(v, '\A[[:xdigit:]]{1,4}(:[[:xdigit:]]{1,4}){5}:(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}\z')
    /* IPv6 dotted-quad notation, shorthand */
    OR (NOT REGEXP_LIKE(v, '\A(.*?[[:xdigit:]]:){6}')
    AND REGEXP_LIKE(v, '\A([[:xdigit:]]{1,4}(:[[:xdigit:]]{1,4}){0,4})?::([[:xdigit:]]{1,4}:){0,5}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}\z'))
) then


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं Oracle BLOB फ़ील्ड से फ़ाइलें कैसे निकाल सकता हूँ?

  2. Oracle डेटाबेस में आर्काइव लॉग डेस्टिनेशन डायरेक्टरी को कैसे सेटअप करें?

  3. ORA-00932:असंगत डेटाटाइप:अपेक्षित - CLOB मिला

  4. IRI सॉफ्टवेयर को Oracle से जोड़ना

  5. ऑरैकल में कॉलम द्वारा दो टेबल कॉलम की तुलना कैसे करें