Il se peut que cette méthode ne soit pas recommandée. Il pourrait être préférable de se brancher sur une sorte de code avec réel en elle, qui peut effectuer l'analyse URI à des fins générales. Si vous avez des besoins limités, cependant, et pouvez commenter/documenter en profondeur que votre code va se casser si vous en demandez plus, alors peut-être que c'est logique de suivre ce chemin.
Le plus simple est de faire correspondre quatre ensembles de 1 à 3 chiffres, avec:
- éventuellement, un ou plusieurs pas- :, plus:, plus un ou plusieurs pas- @, Plus @
- en option,:, plus 1 à 5 chiffres
Quelque chose comme:
([^:]+:[^@][email protected])?(\d{1,3}\.){3}\d{1,3}(:\d{1,5})?
Mais accepterait des choses stupides, comme « 999.999.999.999:99999 »
Si vous ne souhaitez que d'accepter adresses valides IP, et ne se soucient pas que cela arrive à faire partie d'un URI, ou ne se soucient pas ce que existe d'autres déchets dans la chaîne , voici un exemple:
http://www.regular-expressions.info/examples.html
Il correspond essentiellement quatre ensembles de:
- 2, plus 0-4, plus 0-9
- ou 2, plus 5, plus 0-5
- ou 1, plus 0-9, plus 0-9
- ou 1-9, plus 0-9
- ou 0-9
Cela devrait vous commencer.
- éventuellement, un ou plusieurs pas- :, plus:, plus un ou plusieurs pas- @, plus @ (longueurs max peut être intéressant, ici)
- éventuellement,:, plus 0 -65535 (ceci je vais laisser à vous, basé sur les règles 0-255 ci-dessus)
Il existe d'autres règles basées sur la gamme pour les adresses IP correspondant que vous pourriez vouloir éviter (des choses comme 0.0.0.0 et gammes réservées), mais il peut être plus facile d'effectuer une correspondance ultérieure pour ceux-ci. Fondamentalement, je suggère que vous utilisiez l'exemple très simple, ou branchez dans une bibliothèque.
'http: // ...' est pas un Adresse IP mais un URI. – Gumbo
789 n'est pas un octet valide. Aussi: qu'avez-vous essayé jusqu'à présent? –
Quelle langue utilisez-vous? Les chances sont il ya déjà une meilleure solution que d'écrire votre propre expression régulière – Gareth